TCP聊天不能在不同的网络中工作
TCP Chat not working in different networks
我用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地址。
- 我的神经网络不起作用 [XOR 问题]
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- GetShortPathName在网络驱动器上使用中文文件夹时失败
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 通过网络、跨平台传递std::变体是否安全
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 对等如何实际工作网络/端口明智
- Qt TCP/IP通信只能在本地工作,但在网络中会丢失
- 在Windows中C++开发一个P2P网络项目,该项目应该在Linux中工作
- 来自 boost::asio::async_write 的 WriteHandler 在连接断开时无法正常工作(防火墙/手动断开网络)
- 猫鼬网络服务器获取当前工作线程
- 数字识别,神经网络工作不正常
- 不能让简单的boost网络示例工作,仅仅初始化服务器立即导致错误
- 神经网络似乎工作得很好,直到用于处理数据(所有的结果几乎是相同的)
- TCP聊天不能在不同的网络中工作
- 让网络摄像头在OpenCV中工作