Compare commits

..

No commits in common. "ff882a5e067caaa3535f19b4f93f63fa8ab4ea53" and "e91a3a40afdcad8cb8f70d6e5af46dfbedc6a312" have entirely different histories.

6 changed files with 64 additions and 93 deletions

View File

@ -1,12 +1,9 @@
import 'dart:async'; import 'dart:async';
import 'dart:convert'; import 'dart:convert';
import 'dart:ffi';
import 'dart:io'; import 'dart:io';
import 'dart:typed_data';
import 'package:common/utils/toast_utils.dart'; import 'package:common/utils/toast_utils.dart';
import 'package:web_synchronization_tool/windows/little_extension.dart';
import 'package:web_synchronization_tool/windows/socket_tool.dart'; import 'package:web_synchronization_tool/windows/socket_tool.dart';
import '../windows/code.dart'; import '../windows/code.dart';
@ -32,24 +29,26 @@ typedef loginBlockFun = Function(Map);
class LoginSocket{ class LoginSocket{
String url = '110.42.251.214'; String url = '192.168.200.17';
static int port = 37785; static int port = 37785;
String uuid = ''; String uuid = '';
Socket? socket; RawDatagramSocket? socket;
int heartTime = 0; int heartTime = 0;
connect() async { connect() async {
socket?.close(); socket = await RawDatagramSocket.bind(InternetAddress.anyIPv4, 0);
socket = await Socket.connect(url, port, timeout: const Duration(seconds: 30));
socket?.listen((event) {
Map data = dataCute(event);
//
socket?.listen((RawSocketEvent e) {
Datagram? d = socket?.receive();
if (d == null) return;
print(d.data);
Map data = json.decode(cutecode(d.data));// dataCute();
print(data);
// //
if (data['op'] == 2){ if (data['op'] == 2){
loginBlock(data); loginBlock(data);
@ -58,9 +57,7 @@ class LoginSocket{
// //
if (data['op'] == 4){ if (data['op'] == 4){
try{ try{
int time = data['time']; if(data['time']> (3 * 60 * 1000) ){ // > 3
time = DateTime.now().millisecondsSinceEpoch - time;
if(time> (3 * 60 * 1000) ){ // > 3
socketError(); socketError();
} }
}catch(e){ }catch(e){
@ -68,16 +65,19 @@ class LoginSocket{
} }
} }
},onDone: (){ });
},onError: (error){
// // 30
socketError(); socket?.timeout(const Duration(seconds: 30), onTimeout: (eventSink) {
socket?.destroy();
ToastUtils.dismissLoading();
ToastUtils.showToast('连接超时');
eventSink.close(); //
}); });
} }
socketError(){ socketError(){
/// ///
ToastUtils.showLoading(msg: '重连中'); ToastUtils.showLoading(msg: '重连中');
@ -88,21 +88,17 @@ class LoginSocket{
late loginBlockFun loginBlock; late loginBlockFun loginBlock;
//
login(String account,String passwoord,loginBlockFun blockFun){ login(String account,String passwoord,loginBlockFun blockFun){
loginBlock = blockFun; loginBlock = blockFun;
Map map = { Map map = {
'op':1,
'account':account, 'account':account,
'password':passwoord, 'passwoord':passwoord,
'uuid':uuid 'uuid':uuid // 0 c盘
}; };
List<int> data = jsonEncode(map).codeUnits;
final dd = dataMake(map); socket?.send(data, InternetAddress(url), port);
socket?.add(dd);
socket?.flush();
} }
/// ///
@ -111,7 +107,7 @@ class LoginSocket{
int timestamp = now.millisecondsSinceEpoch; // int timestamp = now.millisecondsSinceEpoch; //
heartTime = timestamp; heartTime = timestamp;
Timer(const Duration(seconds: 20), () async { Timer timer = Timer(const Duration(seconds: 20), () async {
if (socket == null){ if (socket == null){
// //
@ -121,44 +117,40 @@ class LoginSocket{
Map map = { Map map = {
"op": 3, "op": 3,
}; };
List<int> data = jsonEncode(map).codeUnits;
socket?.add(dataMake(map)); socket?.send(data, InternetAddress(url), port);
socket?.flush();
heartbeat(); heartbeat();
}); });
} }
// ///
/// // List<int> dataMake(Map map){
List<int> dataMake(Map map){ // // Map对象转换为JSON字符串
// String json = jsonEncode(map);
// //
// Map对象转换为JSON字符串 // String ps = makecode(json, skey);
String json = jsonEncode(map); // //
// // Uint8List uinData = Uint8List.fromList(ps.codeUnits);
String ps = makecode(json, skey); // // 4
// uinData = uinData.toLittle(value: uinData.length);
List<int> bytes = ps.codeUnits; // // return uinData.toList();
// }
return bytes.toLittle(); //
} // ///
// Map dataCute(Uint8List data){
/// //
Map dataCute(Uint8List data){ // if (data.length <= 4) return {};
//
if (data.length <= 4) return {}; // Uint8List pData = data.sublist(4,data.length);
//
Uint8List pData = data.sublist(4,data.length); // String str = cutecode(pData);
//
String str = cutecode(pData); // Map map = json.decode(str);
//
Map map = json.decode(str); // return map;
// }
return map;
}
} }

View File

@ -82,6 +82,8 @@ class _AccountNumberLoginWidgetState extends State<AccountNumberLoginWidget> {
_login(); _login();
},), },),
WidgetUtils.spacer(height: 15), WidgetUtils.spacer(height: 15),
const Text('注册请直接输入账号密码 再点击注册',style: TextStyle(fontSize: 14,color: Colors.grey),),
WidgetUtils.spacer(height: 15),
TextButton( TextButton(
onPressed: _login, onPressed: _login,
style: TextButton.styleFrom(padding: EdgeInsets.zero), style: TextButton.styleFrom(padding: EdgeInsets.zero),

View File

@ -41,10 +41,7 @@ class _MyAppState extends State<MyApp> {
info() async { info() async {
final deviceInfo = await DeviceInfoPlugin().deviceInfo; final deviceInfo = await DeviceInfoPlugin().deviceInfo;
String uuid = deviceInfo.data['deviceId']; LoginSocketUtils.getInstance().uuid = deviceInfo.data.toString();
uuid = uuid.replaceAll('{', '');
uuid = uuid.replaceAll('}', '');
LoginSocketUtils.getInstance().uuid = uuid;
} }

View File

@ -23,30 +23,6 @@ extension MapLittle on Map {
} }
extension ListIntLittle on List<int> {
List<int> toLittle({int? value, int length = 4}){
List<int> ret = [];
///
final little = ByteData(4);
///
little.setInt32(0, value ?? this.length, Endian.little);
for (int i = 0; i < little.lengthInBytes; i++) {
ret.add(little.getUint8(i));
}
ret.addAll(this);
return ret;
}
}
extension Uint8ListLittle on Uint8List { extension Uint8ListLittle on Uint8List {
/// Uint8List /// Uint8List

View File

@ -8,7 +8,7 @@ import 'little_extension.dart';
import 'code.dart'; import 'code.dart';
import 'number_tool.dart'; import 'number_tool.dart';
class SocketUtils extends SyncSocket{ class SocketUtils extends Socket{
// //
SocketUtils._(); SocketUtils._();
// //
@ -22,7 +22,7 @@ class SocketUtils extends SyncSocket{
} }
class SyncSocket { class Socket {
String url = '127.0.0.1'; String url = '127.0.0.1';
static int port = 12345; static int port = 12345;
@ -30,13 +30,12 @@ class SyncSocket {
RawDatagramSocket? socket; RawDatagramSocket? socket;
// IC 0 1 // IC 0 1
int ic = 0; int ic = 1;
/// ip /// ip
List<String> childrenIp = []; List<String> childrenIp = [];
connect() async { connect() async {
socket?.close();
socket = await RawDatagramSocket.bind(InternetAddress.anyIPv4, 0); socket = await RawDatagramSocket.bind(InternetAddress.anyIPv4, 0);
// //

View File

@ -152,6 +152,11 @@ class _ShowWebWidgetState extends State<ShowWebWidget> {
if (widget.main == false) return input(); if (widget.main == false) return input();
return Row( return Row(
children: [ children: [
TextButton(
onPressed: () {
widget.controller.openDevTools();
},
child: const Text('开发者')),
inputNumber(), inputNumber(),
Row( Row(
children: [ children: [