gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 07:32:19 39 4
gpt4 key购买 nike

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

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

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

最佳答案

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

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

为了检验这个假设,运行 traceroute从客户端使用服务器运行的 IP 地址/端口号。如果路由经过超过 3 个跃点(内部客户端 -> 路由器 -> 内部服务器),它就会被发送到更大的互联网。如果是这种情况,您可以配置您的路由器(可能查看 port forwarding),以便将具有给定 IP/端口的任何流量转发到内部服务器,而不是更大的互联网。

关于c++ - 同一网络中两台计算机之间的客户端-服务器应用程序(使用 boost::asio),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17415018/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com