Boost-ASIO简单的echo客户端 - 服务器无法建立连接?

时间:2013-02-23 01:09:37

标签: client-server boost-asio connectivity

我正在使用BOOST-ASIO进行简单的回声client - server(客户端和服务器有一个单独的链接)。当我尝试运行服务器时,我使用此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数据包。

2 个答案:

答案 0 :(得分:1)

你可以尝试

$ telnet server-ip 4000

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

答案 1 :(得分:1)

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

  • 验证服务器上的防火墙例外。
  • 验证服务器网络网关中的防火墙例外。
  • 如果服务器和客户端位于不同的网络上,客户端尝试连接到服务器的外部IP,请验证服务器的网关是否知道要路由到服务器的流量。这可能需要在路由设备中设置规则,例如port forwarding
  • 如果服务器和客户端在同一网络上,但客户端正在尝试通过网络的外部IP连接到服务器,请验证网关是否支持回送发往外部IP的内部流量。
  • 使用网络分析工具(例如Wireshark)验证数据包中的time to live字段是否足够高以至于不会被丢弃。