与路由器后面的计算机进行简单的TCP通信

时间:2012-03-04 22:19:20

标签: sockets tcp nat

我正在为我的媒体播放器编写C#遥控器。它在我的Android手机上运行。

我有一个客户端应用程序在我的计算机上侦听TCP连接,其中一个已建立连接,处理命令(音量增大,音量减小,......)。我已经在我的计算机上使用telnet 127.0.0.1对该部分进行了测试,效果很好。

从手机连接时,事情变得更加棘手,因为它不在同一个网络上(我没有Wi-Fi,只有有线连接),所以我不知道如何继续。基本上我想连接到路由器后面的计算机。

我是否应该在手机上托管TCP服务器,并让PC连接到它?以IRC为例:虽然我在路由器后面,但我可以连接到外部服务器,无需端口转发。 或者,如果在我的计算机上托管服务器很好,我该如何连接它呢?

我还不明白这一切,如果我出错了,请随时纠正我。

2 个答案:

答案 0 :(得分:6)

保持PC托管服务器并配置路由器以转发与PC的连接更合乎逻辑。您有两种选择:

  • 建立 DMZ :路由器上的所有传入连接都将仅转发到一台PC。如果网络上只有1台需要接受连接的PC,这是最简单的。
  • 配置 port forwarding :您可以指示路由器将端口X上传入的连接转发到端口Z上的IP Y.这样,多个PC可以列出连接(使用不同的端口)在路由器上)。它也更安全一点。

如何设置这些取决于您的路由器,但大多数路由器只接受其端口80上的连接并提供简单的Web界面。如果您提供路由器品牌,我们可以将您链接到手册。

答案 1 :(得分:6)

  

从手机连接起来,事情变得棘手了   它不在同一个网络上(我没有Wi-Fi,只有有线网络   连接),所以我不知道如何继续。基本上我想   连接到路由器后面的计算机。

您希望实现的目标是什么,但您需要了解NAT遍历和打孔。

大多数情况下,NAT /路由器后面的设备只有一个在LAN上有效的私有IP地址。远程设备无法猜测它。当设备想要与WAN通信时,NAT将该私有地址转换为公共IP地址。

简单的解决方案是您可以为NAT后面的设备提供公共IP地址。在这种情况下,WAN上的远程设备很容易就能到达它,因为它的地址是公共的。