基于Socket的通信,如何实现广域网的通信?

如题所述

对于 TCP 来说局域网和广域网不是一样嘛。
只要给个 IP 地址就行了。至于如何连接到那机器,那是路由器管理与配置的问题,跟我们编程没什么关系。

比如你家和公司各有一个路由器,各有一台电脑在对应的路由器后面连接着,那你需要在两台路由器上各创建一个 NAT,比如:
家->公司:VNC,公司->家:3389远程桌面,那你在公司的路由器上创建一个 NAT 把 5900 端口转发到公司PC:5900 端口,这样家里就能访问公司PC的 VNC 服务器了,对应地在家的路由器创建 NAT 把 3389 端口转发到家PC:3389 端口上,那从公司就可以直接访问家PC的远程桌面了。

这一切都是网络管理路由器的配置工作,跟编程没有关系。追问

客户端的路由需要配置,意味着安装需要派遣专业人员。
可是QQ和网游是怎么做到,安装就能使用的呢?

追答

像网游只需要服务器端配置就行了,因此只有客户端连接服务器,没有服务器连接到客户端。QQ一般的聊天也是这样的,另外当 QQ 发现两个在同个局域网的人想传送文件,它会告诉彼此对方的局域网 IP 然后叫他们俩直接在局域网传送文件。而在公网上传送就不能这样,只能中传一下,就是让俩人都连接到服务器然后服务器把两个客户端串接起来。

追问

能不能理解为,QQ的服务器端只使用ServerSocket,客户端只使用Socket连接服务器。
在这种情况下,只需要配置服务端的路由器就行了?

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-22
我只能从理论上告诉你,希望你能明白~
首先,主机地址必须是静态的,也就是固定的。这样客户端才能及时的找到你。由于网络的复杂性,一个IP地址可能有多台主机,所以需要一个类来解析数据报的报头。从而建立起通信,(TCP/IP:应该是三次握手,UDP:是直接发送)当通信建立起来,一切都简单明了了。关键在于客户端地址的封装,以及重新发送消息。
相似回答