c++ - 客户端/服务器设置仅在同一台计算机上有效

标签 c++ c sockets networking

我有两个应用程序。一个是服务器应用程序,另一个是客户端应用程序。服务器应用程序监听连接,然后将消息提供给所有连接的客户端。

到目前为止,我的所有测试都是通过在同一台计算机上运行两个应用程序来完成的,并且运行良好。现在,虽然我正在尝试测试在一台计算机上运行的服务器和在另一台计算机上运行的客户端。

这些机器中的每台都位于我自己的家庭网络内。该网络位于带有防火墙的路由器后面。根据我所读到的内容,我的问题可能与端口转发有关,而不是在路由器上设置。听起来有可能吗?

这是我可以用我的代码解决的问题吗?我真的需要要求所有用户手动打开防火墙上的端口吗?我使用过许多其他连接到服务器的商业应用程序,并且不需要我在防火墙上打开端口。这些应用程序和我的应用程序有什么不同?

话又说回来,也许我在这里叫错了树。也许还有其他一些问题阻止我的代码在这种情况下工作?

我可以提供任何可能有帮助的代码片段,但我不确定从哪里开始寻找,而且我不想只发布我的整个解决方案:)

提前谢谢

最佳答案

您需要绑定(bind)到 0.0.0.0(简化版本)才能接受非来自本地计算机的连接。您是否检查过您没有绑定(bind)到 127.0.0.1?

当您绑定(bind)到 0.0.0.0 时,您实际上绑定(bind)到当前主机的所有当前和 future 地址,因此将能够接受来自任何地方的连接,您也可以仅绑定(bind)到其中一个网络接口(interface)的地址。

关于c++ - 客户端/服务器设置仅在同一台计算机上有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12886190/

相关文章:

c++ - 你如何管理cpp函数?

c++ - 使用 using 指令的循环依赖,其中前向声明不起作用

c++ - Qt——QWidget到底是什么

arrays - 这段代码是做什么的。检查两个字符串的字谜

c - 为一个指针赋值另一个指针的值

Java SocketChannel 读取时写入被阻止

c++ - 网络:当接口(interface)打开/关闭时在所有接口(interface)上绑定(bind)一个套接字

c++ - 如何在 Crypto++ 中加载 Base64 RSA key

c - 生成文件错误:/usr/bin/ld: cannot find -lsqlite3

sockets - 自签名证书 : connection timeouts