我在C#中创建了一个服务器/客户端应用程序。服务器连接到NAT后面的客户端
我的问题如下:假设客户端位于NAT(如路由器)后面并尝试连接到服务器。从服务器的角度来看,服务器只知道客户端的外部IP地址。你如何确定哪个计算机发送数据包到NAT后面?我知道从客户端的路由器端口转发是解决这类问题的常用方法,但是如果您查看诸如Skype的应用程序,则无需端口转发即可正确建立服务器与NAT背后的许多客户端之间的连接。反过来也可以提出这个问题(I.E:客户端到服务器后面的NAT)。
我在套接字编程方面很新颖,所以我很乐意听到任何我可以阅读的指南或材料来完全理解这些东西。
http://www.cisco.com/en/US/tech/tk648/tk361/technologies_tech_note09186a0080094831.shtml –
检出SignalR。它使这很容易。 –
关于点对点应用程序(Skype&Friends)如何通过'NAT'路由器建立连接,甚至可以通过谷歌的'UDP Hole Punching'和/或'STUN'建立连接。 – alk