C++ 同一网络中两台计算机之间的客户机-服务器应用程序(使用boost::asio)

C++ 同一网络中两台计算机之间的客户机-服务器应用程序(使用boost::asio),c++,connection,client-server,boost-asio,lan,C++,Connection,Client Server,Boost Asio,Lan,我正在尝试使用boost::asio教程:和(在c++中)在同一网络中的台式电脑和笔记本电脑(后者使用无线连接)之间建立基本通信 当我在同一台机器上运行服务器和客户机时(使用localhost和datetime端口作为参数),它工作得非常出色。但是,如果我尝试将笔记本电脑设置为服务器(从命令提示符下使用netstat-anb对其进行测试,它确实在运行,并按照预期监听端口13,我甚至禁用了防火墙以确保它不会引起任何问题),我无法与客户端连接(在PC上设置),无论我尝试了什么IP(localhost

我正在尝试使用boost::asio教程:和(在c++中)在同一网络中的台式电脑和笔记本电脑(后者使用无线连接)之间建立基本通信

当我在同一台机器上运行服务器和客户机时(使用localhost和datetime端口作为参数),它工作得非常出色。但是,如果我尝试将笔记本电脑设置为服务器(从命令提示符下使用
netstat-anb
对其进行测试,它确实在运行,并按照预期监听端口13,我甚至禁用了防火墙以确保它不会引起任何问题),我无法与客户端连接(在PC上设置),无论我尝试了什么IP(localhost,基本上是
ipconfig-all
提供给我的所有IP)

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

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

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


为了验证这一假设,请使用服务器运行的IP地址/端口号从客户端运行。如果路由经过3个以上的跃点(intern client->router->internal server),它将被发送到更大的internet。如果是这种情况,您可以配置路由器(可能需要查看)这样,具有给定IP/端口的任何通信都会被转发到内部服务器,而不是更大的internet。

我们可以看到使您确信服务器正在侦听的
netstat
输出吗?如果您没有选择一个IP地址使其正常工作,那么不工作也就不足为奇了。当然:实际上,我没有在中指定任何IP地址服务器,尽管我后来尝试使用许多IP(大部分是ipconfig提供给我的,当然在客户端也设置了相同的IP),但没有任何改进。它在我工作场所的两台计算机之间运行良好(因此现在我知道我必须提供给客户端的IP是服务器机器的本地IP),所以问题出在我的家庭网络上。威尔调查一下,非常感谢你的回复!;)你说得对,我试着在我的工作场所的两台计算机之间运行应用程序,它工作得很有魅力。所以问题是在我的家庭网络中,我将研究端口转发。非常感谢!:)