void INatPunchListener.OnNatIntroductionRequest( IPEndPoint localEndPoint, IPEndPoint remoteEndPoint, string token, IPEndPoint internetEndPoint) { WaitPeer wpeer; if (_waitingPeers.TryGetValue(token, out wpeer)) { if (wpeer.InternalAddr.Equals(localEndPoint) && wpeer.ExternalAddr.Equals(remoteEndPoint)) { wpeer.Refresh(); return; } Console.WriteLine("Wait peer found, sending introduction..."); //found in list - introduce client and host to eachother Console.WriteLine( $"host - i({wpeer.InternalAddr}) e({wpeer.ExternalAddr}) p({wpeer.InternetAddr})" + $"\n" + $"client - i({localEndPoint}) e({remoteEndPoint}) i({internetEndPoint})" ); _puncher.NatPunchModule.NatIntroduce( wpeer.InternalAddr, // host internal wpeer.ExternalAddr, // host external wpeer.InternetAddr, localEndPoint, // client internal remoteEndPoint, // client external internetEndPoint, token // request token ); //Clear dictionary _waitingPeers.Remove(token); } else { Console.WriteLine("Wait peer created. i({0}) e({1}) p({2})", localEndPoint, remoteEndPoint, internetEndPoint); _waitingPeers[token] = new WaitPeer(localEndPoint, remoteEndPoint, internetEndPoint); } }
void INatPunchListener.OnNatIntroductionRequest(NetEndPoint localEndPoint, NetEndPoint remoteEndPoint, string token) { WaitPeer wpeer; if (_waitingPeers.TryGetValue(token, out wpeer)) { if (wpeer.InternalAddr.Equals(localEndPoint) && wpeer.ExternalAddr.Equals(remoteEndPoint)) { wpeer.Refresh(); return; } Console.WriteLine("Wait peer found, sending introduction..."); //found in list - introduce client and host to eachother Console.WriteLine( "host - i({0}) e({1})\nclient - i({2}) e({3})", wpeer.InternalAddr, wpeer.ExternalAddr, localEndPoint, remoteEndPoint); _puncher.NatPunchModule.NatIntroduce( wpeer.InternalAddr, // host internal wpeer.ExternalAddr, // host external localEndPoint, // client internal remoteEndPoint, // client external token // request token ); //Clear dictionary _waitingPeers.Remove(token); } else { Console.WriteLine("Wait peer created. i({0}) e({1})", localEndPoint, remoteEndPoint); _waitingPeers[token] = new WaitPeer(localEndPoint, remoteEndPoint); } }