C# 是否可以使用TCP套接字中的套接字信息创建P2P UDP穿孔?

C# 是否可以使用TCP套接字中的套接字信息创建P2P UDP穿孔?,c#,tcp,udp,nat,hole-punching,C#,Tcp,Udp,Nat,Hole Punching,我目前正在尝试实现一个简单的打孔,并与服务器建立TCP连接,服务器向TCP客户端发送彼此的端点信息。此信息是否可用于创建udp连接以在NAT中穿孔,并使用UdpClient创建p2p连接 在我目前的方法中,我使用标准的.NETUDPClient来设置所有这些。我将NatTraversal设置为true,并将ReuseAddress SocketOption设置为true。是否有可能创建与此udp客户端的成功连接,因为它没有向服务器发送任何信息,也没有通过NAT进行路由 udpClient

我目前正在尝试实现一个简单的打孔,并与服务器建立TCP连接,服务器向TCP客户端发送彼此的端点信息。此信息是否可用于创建udp连接以在NAT中穿孔,并使用UdpClient创建p2p连接

在我目前的方法中,我使用标准的.NETUDPClient来设置所有这些。我将NatTraversal设置为true,并将ReuseAddress SocketOption设置为true。是否有可能创建与此udp客户端的成功连接,因为它没有向服务器发送任何信息,也没有通过NAT进行路由

    udpClient.AllowNatTraversal(true);
    udpClient.Client.SetIPProtectionLevel(IPProtectionLevel.Unrestricted);
    udpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);

TCP、UDP、NAT都是不同的IP协议。协议类型在IP头中定义,c#具有协议类型的枚举(在网络库中),不允许您重写。因此,您必须使用C++或使用Windows DLL方法(www. pVojk.net),并直接调用Windows库。Nat在维基上有描述:你的问题不是很清楚,但看看STUN。与服务器的TCP连接可以是与STUN服务器的连接,STUN服务器可以帮助提供足够的信息来确定如何打孔,以便对等方可以与UDP进行某些NAT机制的通信。