private void _psSender_OnReceiveP2PTask(NatInfo obj) { _p2pConnect = new Receiver(false); _p2pConnect.OnP2PSucess += _p2pConnect_OnP2PSucess; _p2pConnect.OnMessage += _p2pConnect_OnMessage; _p2pConnect.OnDisconnected += _p2pConnect_OnDisconnected; _p2pConnect.Start(MyNatInfo.Port); _psSender.Dispose(); TaskHelper.Start(() => { int tryCount = 0; int maxCount = 300; while (!IsConnected) { ThreadHelper.Sleep(100); tryCount++; HolePunching(obj.ToString()); if (tryCount > maxCount && !IsConnected) { OnP2pFailed?.Invoke($"已重试超过{maxCount}次"); _autoResetEvent.Set(); break; } } }); }
private void _p2pConnect_OnP2PSucess(NatInfo obj) { IsConnected = true; RemoteNatInfo = obj; OnP2pSucess?.Invoke(RemoteNatInfo); _autoResetEvent.Set(); }
private void Model_NatDiscoveryFinished(object sender, GEventArgs <NatInfo> e) { NatInfo info = e.Item; natDiscoveryWin.Dispatcher.Invoke(new Action(() => natDiscoveryWin.Close())); MessageBox.Show(string.Format("NAT discovery finished. NAT Type: {0}, Public address: {1}", info.NatType, info.PublicAddress)); }
private void _p2pSender_OnP2PSucess(NatInfo obj) { RemoteNatInfo = obj; isSenderConnected = true; IsConnected = true; OnP2pSucess?.Invoke(RemoteNatInfo); _autoResetEvent.Set(); }
private void OnNatDiscoveryFinished(NatInfo args) { var handler = NatDiscoveryFinished; if (handler != null) { handler(this, new GEventArgs <NatInfo>(args)); } }
public void RequestP2p(string remoteIpPort) { var ipPort = remoteIpPort.ToIPPort(); RemoteNatInfo = new NatInfo() { IP = ipPort.Item1, Port = ipPort.Item2, IsMe = false }; _psSender.SendP2PRequest(remoteIpPort); _autoResetEvent.WaitOne(); }
private void _psSender_OnPublicNatInfoResponse(NatInfo obj) { MyNatInfo = obj; OnPublicNatInfoResponse?.Invoke(obj); }
private static void Peer_OnP2PSucess(NatInfo obj) { ConsoleHelper.WriteLine($"p2p连接成功 ip:{obj.IP},port:{obj.Port}"); }
private static void Peer_OnPublicNatInfoResponse(NatInfo obj) { ConsoleHelper.WriteLine("收到当前连接的Nat信息 " + obj.ToString()); }
private void OnNatDiscoveryFinished(NatInfo args) { var handler = NatDiscoveryFinished; if (handler != null) handler(this, new GEventArgs<NatInfo>(args)); }
private void Callback(NatInfo info) { OnNatDiscoveryFinished(info); }
private void Callback(NatInfo info) { OnNatDiscoveryFinished(info); }