2013-02-23 119 views
0

我正在使用BOOST-ASIO进行简单回声client - server(客户端和服务器有单独的链接)。当我尝试运行服务器时,我使用这个async_tcp_echo_server 4000。对于客户端我使用blocking_tcp_echo_client #.#.#.# 4000(以#。#。#。#作为IP地址)。我在XP-SP3上使用usb卡将我的电脑连接到无线dsl调制解调器。在客户端几秒钟后,我得到这个错误:Boost-ASIO简单回声客户端服务器不能建立连接?

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调制解调器和相同问题的计算机上运行此操作。我做了我的地址,并且确实对4/4包有效。

回答

1

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

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

我最近发现这个网页http://stackoverflow.com/questions/10274623/how-to-send-a-udp-packet-to-a-specific-computer-when-all-the-computer-on-the-这可能是网络的原因。我是wireshark的新手,所以我会尝试作为我的最后一个选项,但你确实提到了端口转发,我现在猜测这是最可能的错误。 – pandoragami 2013-02-23 03:19:57

1

你可以尝试

$ telnet server-ip 4000 
从客户端

,看看它是否可以建立TCP连接。

+0

'无法打开连接到主机,在端口4000:连接失败'但它好像它正在某处! – pandoragami 2013-02-23 03:14:17

相关问题