150 lines
3.6 KiB
Dart
150 lines
3.6 KiB
Dart
|
|
|
|||
|
|
|
|||
|
|
import 'dart:async';
|
|||
|
|
import 'dart:io';
|
|||
|
|
|
|||
|
|
import 'package:get/get.dart';
|
|||
|
|
|
|||
|
|
import '../../network/api_repository.dart';
|
|||
|
|
import 'udp_manage.dart';
|
|||
|
|
import 'udp_senderManage.dart';
|
|||
|
|
|
|||
|
|
class UdpHelp{
|
|||
|
|
|
|||
|
|
openUDP() async {
|
|||
|
|
// 从服务器获取ip跟端口
|
|||
|
|
var entity = await ApiRepository.to.getWifiLockServiceIpAndPort();
|
|||
|
|
if(entity.errorCode! == 0){
|
|||
|
|
UDPManage();
|
|||
|
|
// UDPManage().initUdp();
|
|||
|
|
// UDPManage().host = entity.data!.serviceList![0].serviceIp!;
|
|||
|
|
// UDPManage().port = int.parse(entity.data!.serviceList![0].port!);
|
|||
|
|
|
|||
|
|
var serversList = <int>[];
|
|||
|
|
for(int i = 0; i<entity.data!.serviceList!.length; i++){
|
|||
|
|
var item = entity.data!.serviceList![i];
|
|||
|
|
if(item.serviceIp!.contains("192")){
|
|||
|
|
var itemList = item.serviceIp!.split(".");
|
|||
|
|
for (var element in itemList) {
|
|||
|
|
serversList.add(int.parse(element));
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
List<InternetAddress> addresses = await InternetAddress.lookup(item.serviceIp!);
|
|||
|
|
var itemList = addresses.first.address.split(".");
|
|||
|
|
for (var element in itemList) {
|
|||
|
|
serversList.add(int.parse(element));
|
|||
|
|
}
|
|||
|
|
print('Resolved google.com to address: ${addresses.first.address} serversList:${serversList}');
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Timer timer = Timer.periodic(1.seconds, (timer) {
|
|||
|
|
UDPSenderManage.sendHeart(
|
|||
|
|
userName: "15080825640",
|
|||
|
|
ipList: serversList,
|
|||
|
|
tokenStr: "b989fa15f75c2ac02718b7c9bb64f80e",
|
|||
|
|
);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Future<void> getWifiLockServiceIpAndPort() async {
|
|||
|
|
var entity = await ApiRepository.to.getWifiLockServiceIpAndPort();
|
|||
|
|
if(entity.errorCode! == 0){
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
class UdpData {
|
|||
|
|
bool isUsed = false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// class UdpSendThread {
|
|||
|
|
// List<UdpData> 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');
|
|||
|
|
// }
|