三九宝宝网宝宝教育教学论文

C语言网络编程

02月12日 编辑 39baobao.com

路由器本身不具备数据保存能力。

通常,路由器的功能是端口转发。在路由器建立端口映射(公网某端口和内网某台电脑的某端口关联)后,外网电脑才能和内网某电脑进行通信,通信过程中路由器一直负责数据的中转。但内网电脑一旦关闭连接,路由器是无法单独收取并保存信息的,它会直接把断连事件通知给连接的另一端(外网某电脑)。

例如你的情况,如果局域网里是作为服务器S(监听方),外网某电脑作为客户端C(连接方)。

S程序本身监听端口2014,而C要连接的是路由器在公网的12345端口。

设路由器在公网IP是123.124.125.126,S的内网IP是192.168.1.1。

这时需要对路由器进行手动配置,让路由器能将公网的12345端口和内网192.168.1.1这台电脑的2014映射关联。

这时,内网192.168.1.1上的S对2014进行监听(就用bind然后listen),路由器会反映到公网上,于是在公网看来,就是”电脑“123.124.125.126在对12345进行监听。

而如果外网连接123.124.125.126:12345(注意冒号),路由器会将这个连接请求转化成对192.168.1.1:2014(注意冒号)的连接请求,于是S就会收到连接,能用accept接受它。

后面都和局域网编程一样了。

有问题请继续追问。

推荐阅读
图文推荐