TCP聊天不能在不同的网络中工作

TCP Chat not working in different networks

本文关键字:网络 工作 聊天 不能 TCP      更新时间:2023-10-16

我用C/c++编写了一个TCP/IP聊天服务器/客户端,在我的本地网络和连接到它的几个客户端中完美地工作。当服务器与客户端处于不同的网络中时,它不起作用。我以前在Python中编写了相同的工具,并且发生了相同的情况。

有解决这个问题的方法吗?没有端口转发,这是最常见的解决方案。

我只能找到这个:Android服务器概念混淆。如何连接TCP聊天应用程序在不同的网络,但我不能理解它。

注意:我刚刚找到一个示例程序(服务器),当它在不同的网络上工作;http://www.codeproject.com/Articles/1891/Beginning-Winsock-Programming-Simple-TCP-server

你有三个选择:

1) NAT穿透。两个设备同时试图相互交换数据,欺骗每个人的路由器,使其认为自己在回复。为此,你们每个人都需要对方的公共IP地址,如果你需要TCP的任何特性,你需要自己实现它们。

2)公共集合服务器。这两种设备都会自动连接到非联合国网络中的服务器。服务器知道连接到它的每个客户端的公共IP地址,因此它可以将数据路由到具有正确公共IP的客户端。

3) 1和2的某种组合。在这种情况下,使用公共服务器可以方便NAT渗透,并且不需要人工协调。您的朋友在公共服务器上注册,公共服务器告诉他您的公共IP地址,从而促进NAT渗透。

在本地网络中,设备地址不会频繁改变。您可以通过定义本地地址来访问计算机。另一方面,如果您想与不同网络中的设备通信,则应该知道其公共IP并定义到端口的路由。

如果你有一个静态IP或已知IP的服务器,你可以到达它。您可以在此服务器中动态存储客户端的IP地址。写一个程序把主机的IP地址通知给服务器。这样,即使IP地址经常更改,也可以存储IP地址。