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); } }
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"); } }