From 3ce4e0561365deb3f43370268cc8b5b9d17f777f Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Fri, 1 Aug 2025 12:19:32 +0800 Subject: [PATCH] fix --- Sources/Punchnet/SDLContext.swift | 58 ++++++++++++++++--------------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/Sources/Punchnet/SDLContext.swift b/Sources/Punchnet/SDLContext.swift index 9c455ea..8d321a8 100644 --- a/Sources/Punchnet/SDLContext.swift +++ b/Sources/Punchnet/SDLContext.swift @@ -134,23 +134,25 @@ public class SDLContext: @unchecked Sendable { } } + group.addTask { + // 启动网络监控 + self.monitorCancel = self.monitor.eventFlow.sink { event in + switch event { + case .changed: + // 需要重新探测网络的nat类型 + Task { + self.natType = await SDLNatProber.getNatType(udpHole: self.udpHole, config: self.config) + NSLog("didNetworkPathChanged, nat type is: \(self.natType)") + } + case .unreachable: + NSLog("didNetworkPathUnreachable") + } + } + self.monitor.start() + } + try await group.waitForAll() } - - // 启动网络监控 - self.monitorCancel = self.monitor.eventFlow.sink { event in - switch event { - case .changed: - // 需要重新探测网络的nat类型 - Task { - self.natType = await SDLNatProber.getNatType(udpHole: self.udpHole, config: self.config) - NSLog("didNetworkPathChanged, nat type is: \(self.natType)") - } - case .unreachable: - NSLog("didNetworkPathUnreachable") - } - } - self.monitor.start() } public func stop() async { @@ -376,18 +378,18 @@ public class SDLContext: @unchecked Sendable { } // 流量统计 - public func flowReportTask() { - Task { - // 每分钟汇报一次 - self.flowTracerCancel = Timer.publish(every: 60.0, on: .main, in: .common).autoconnect() - .sink { _ in - Task { - let (forwardNum, p2pNum, inboundNum) = await self.flowTracer.reset() - await self.superClient?.flowReport(forwardNum: forwardNum, p2pNum: p2pNum, inboundNum: inboundNum) - } - } - } - } +// public func flowReportTask() { +// Task { +// // 每分钟汇报一次 +// self.flowTracerCancel = Timer.publish(every: 60.0, on: .main, in: .common).autoconnect() +// .sink { _ in +// Task { +// let (forwardNum, p2pNum, inboundNum) = await self.flowTracer.reset() +// await self.superClient?.flowReport(forwardNum: forwardNum, p2pNum: p2pNum, inboundNum: inboundNum) +// } +// } +// } +// } // 网络改变时需要重新配置网络信息 private func didNetworkConfigChanged(devAddr: SDLDevAddr, dnsServers: [String]? = nil) async { @@ -406,7 +408,7 @@ public class SDLContext: @unchecked Sendable { } NSLog("[SDLContext] Tun started at network ip: \(netAddress.ipAddress), mask: \(netAddress.maskAddress)") - + let ipv4Settings = NEIPv4Settings(addresses: [netAddress.ipAddress], subnetMasks: [netAddress.maskAddress]) // 设置路由表 //NEIPv4Route.default()