0

我正在尝试使用 boost::asio 教程:同步客户端同步服务器(在 C++ 中)在同一网络中的台式 PC 和笔记本电脑(后者使用无线连接)之间建立基本通信。

当我在同一台机器上同时运行服务器和客户端时(使用本地主机和日期时间端口作为参数),它运行得非常好。但是,如果我尝试将笔记本电脑设置为服务器(netstat -anb在命令提示符下对其进行了测试,它确实正在运行并按应有的方式监听端口 13,我什至停用了防火墙以确保它不会引起任何问题),无论我尝试什么IP(本地主机,基本上是任何ipconfig -all给我的IP),我都无法通过客户端(在PC上设置)连接到它。

所以无论我尝试什么,我都找不到客户端可以用来连接服务器的正确地址。有人可以帮我吗?

4

1 回答 1

1

问题很可能是您的家庭网络,而不是您的程序。

假设您的 PC 和笔记本电脑都连接到同一个路由器(PC 通过以太网和笔记本电脑通过无线连接),任何一台机器产生的流量都会首先发送到路由器。当此流量到达路由器时,它很可能会进行网络地址转换 ( NAT ),然后将流量发送到 Internet。如果是这种情况,来自您的客户端的请求可能会被发送到更大的互联网(您发送请求的内部 IP 地址未找到/未在给定端口上运行您期望的服务),而不是转发到本地网络中运行的服务器。

要检验这个假设,请使用服务器运行所在的 IP 地址/端口号从客户端运行跟踪路由。如果路由经过超过 3 个跃点(实习生客户端 -> 路由器 -> 内部服务器),它将被发送到更大的互联网。如果是这种情况,您可以配置您的路由器(也许查看端口转发),以便将具有给定 IP / 端口的任何流量转发到内部服务器,而不是进入更大的互联网。

于 2013-07-01T23:25:57.197 回答