Example #1
0
        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;
                    }
                }
            });
        }
Example #2
0
 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));
        }
Example #4
0
 private void _p2pSender_OnP2PSucess(NatInfo obj)
 {
     RemoteNatInfo     = obj;
     isSenderConnected = true;
     IsConnected       = true;
     OnP2pSucess?.Invoke(RemoteNatInfo);
     _autoResetEvent.Set();
 }
Example #5
0
        private void OnNatDiscoveryFinished(NatInfo args)
        {
            var handler = NatDiscoveryFinished;

            if (handler != null)
            {
                handler(this, new GEventArgs <NatInfo>(args));
            }
        }
Example #6
0
        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();
        }
Example #7
0
 private void _psSender_OnPublicNatInfoResponse(NatInfo obj)
 {
     MyNatInfo = obj;
     OnPublicNatInfoResponse?.Invoke(obj);
 }
Example #8
0
 private static void Peer_OnP2PSucess(NatInfo obj)
 {
     ConsoleHelper.WriteLine($"p2p连接成功 ip:{obj.IP},port:{obj.Port}");
 }
Example #9
0
 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);
 }
Example #12
0
 private void Callback(NatInfo info)
 {
     OnNatDiscoveryFinished(info);
 }