import 'dart:async'; import 'dart:io'; import 'package:get/get.dart'; import 'package:star_lock/main/lockDetail/lockSet/configuringWifi/configuringWifi/configuringWifiEntity.dart'; import '../../app_settings/app_settings.dart'; import '../../network/api_repository.dart'; import '../../tools/storage.dart'; import 'udp_manage.dart'; import 'udp_senderManage.dart'; class UdpHelp { Timer? udpHeartTimer; openUDP() async { // 从服务器获取ip跟端口 final ConfiguringWifiEntity entity = await ApiRepository.to.getWifiLockServiceIpAndPort(); if (entity.errorCode! == 0) { UDPManage(); // UDPManage().initUdp(); UDPManage().port = int.parse(entity.data!.serviceList![0].port!); final List serversList = []; for (int i = 0; i < entity.data!.serviceList!.length; i++) { final ServiceList item = entity.data!.serviceList![i]; if (item.serviceIp!.contains('192')) { UDPManage().host = entity.data!.serviceList![0].serviceIp!; final List itemList = item.serviceIp!.split('.'); for (String element in itemList) { serversList.add(int.parse(element)); } } else { final List addresses = await InternetAddress.lookup(item.serviceIp!); UDPManage().host = addresses.first.address; final List itemList = addresses.first.address.split('.'); for (String element in itemList) { serversList.add(int.parse(element)); } // AppLog.log('Resolved google.com to address: ${addresses.first.address} serversList:$serversList'); } } final String? uid = await Storage.getUid(); udpHeartTimer = Timer.periodic(1.seconds, (Timer timer) async { getLoginStatus().then((bool value) { if (value) { UDPSenderManage.sendHeart( userName: uid, ipList: serversList, tokenStr: 'b989fa15f75c2ac02718b7c9bb64f80e', ); // AppLog.log('发送心跳了'); } else { timer.cancel(); } }); }); } } Future getLoginStatus() async { final String? data = await Storage.getString(saveUserLoginData); if (data != null && data.isNotEmpty) { return true; } return false; } void closeUDP() { if (udpHeartTimer != null) { udpHeartTimer!.cancel(); } } // dispose() { // udpHeartTimer!.cancel(); // } } class UdpData { bool isUsed = false; } // class UdpSendThread { // List udpDatas = []; // bool udpSendTag = true; // int udpSendTime = 0; // // UdpSendThread() { // for (int i = 0; i < BUFNUM; i++) { // udpDatas.add(UdpData()); // } // udpSend(); // } // // void udpSend() async { // while (udpSendTag) { // while (udpSendTime <= 0) { // await Future.delayed(Duration(seconds: 1)); // } // bool hasDataSend = true; // while (hasDataSend) { // hasDataSend = false; // for (int i = 0; i < BUFNUM; i++) { // UdpData udpList = udpDatas[i]; // if (udpList.isUsed) { // // Do something // } else { // // Do something else // } // } // await Future.delayed(Duration(seconds: 1)); // } // udpSendTime--; // } // } // } // import 'dart:async'; // // class UdpSendCondition { // bool udpSendTag = true; // int udpSendTime = 0; // List udpDatas = []; // Isolate isolate; // // void start() async { // final receivePort = ReceivePort(); // isolate = await Isolate.spawn(_isolateEntry, receivePort.sendPort); // // receivePort.listen((message) { // if (message == 'done') { // udpSendTime--; // if (udpSendTime <= 0) { // stop(); // } // } // }); // } // // void stop() { // if (isolate != null) { // isolate.kill(priority: Isolate.immediate); // isolate = null; // } // } // } // // void _isolateEntry(SendPort sendPort) async { // bool hasDataSend = true; // while (hasDataSend) { // hasDataSend = false; // for (int i = 0; i < BUFNUM; i++) { // var udpList = udpDatas[i]; // if (udpList.isUsed) { // // Do something // } else { // // Do something else // } // } // await Future.delayed(Duration(seconds: 1)); // } // sendPort.send('done'); // }