0

我将 BOOST-ASIO 用于简单的回显客户端-服务器(客户端和服务器有单独的链接)。当我尝试运行服务器时,我使用它async_tcp_echo_server 4000。对于我使用的客户端blocking_tcp_echo_client #.#.#.# 4000(使用 #.#.#.# 作为 IP 地址)。我在 XP-SP3 上,我的计算机使用 USB 卡连接到我的无线 dsl 调制解调器。在客户端几秒钟后,我收到此错误:

Exception: connect: A connection attempt failed because the connected party did
not properly respond after a period of time, or established connection failed be
cause connected host has failed to respond

有什么想法吗?我关闭了包括 Windows 防火墙在内的防火墙,但仍然没有任何响应。我的端口可能在不正确的范围内吗?我是否需要包含计算机名称来指定网络上的机器(网络上有时还有其他机器处于活动状态)?我确实尝试在另一台直接连接到 dsl 调制解调器的计算机上运行它,并且出现同样的问题。我确实ping了我的地址,并且确实适用于4/4个数据包。

4

2 回答 2

1

你可以试试

$ telnet server-ip 4000

从您的客户端,看看是否可以建立 tcp 连接。

于 2013-02-23T02:28:26.467 回答
1

这可能是各种各样的问题。因此,值得使用较低级别的网络工具,例如 netcat在服务器上提供端口,并尝试netcat从客户端连接。这可以通过消除应用程序的网络编程代码引入的任何潜在问题来帮助简化问题。如果问题被确定为网络问题,则需要检查几件事:

  • 验证服务器上的防火墙例外。
  • 验证服务器网络网关中的防火墙例外。
  • 如果服务器和客户端在不同的网络上,客户端尝试连接到服务器的外部 IP,则验证服务器的网关是否知道要路由到服务器的流量。这可能需要在路由设备中设置规则,例如端口转发。
  • 如果服务器和客户端在同一个网络上,但客户端尝试通过网络的外部 IP 连接到服务器,则验证网关是否支持环回以外部 IP 为目的地的内部流量。
  • 使用网络分析工具(例如Wireshark)来验证数据包中的生存时间字段是否足够高以至于不会被丢弃。
于 2013-02-23T03:01:39.623 回答