Пример #1
0
        void OnPeerToPeerHello(byte[] buf, int size, IPEndPoint remoteEP)
        {
            if (!UseP2P)
            {
                return;
            }

            if (PeerToPeerHello.TryUnpack(buf, size, out var packet))
            {
                Log.Debug("receive p2p hello {0}", remoteEP);
                P2PTask.OnPeerToPeerHello(packet, remoteEP);
            }
            else
            {
                Log.Warning("unpack fail p2p hello {0}", remoteEP);
            }
        }
Пример #2
0
        async Task <PeerToPeerHello> WaitHello()
        {
            while (true)
            {
                var receive = await m_Socket.ReceiveAsync();

                var buf  = receive.Buffer;
                int size = buf.Length;
                if (DiscoveryHolePunch.TryUnpack(buf, size, out var _))
                {
                    continue;
                }
                if (PeerToPeerHello.TryUnpack(buf, size, out var packet))
                {
                    m_RemoteEP      = receive.RemoteEndPoint;
                    m_RemoteLocalEP = null;
                    return(packet);
                }
                throw new Exception("fail PeerToPeerHello");
            }
        }