套接字服务器不接受来自其他计算机的客户端(连接失败:10060)

时间:2011-12-17 23:17:32

标签: c sockets

我正在尝试使用this c socket class,但只有在我自己的计算机上使用它时才有效。

仅限桌面

服务器启动如下:cSocketServer -p:2030 -i:192.168.178.22

客户端连接:cSocketclient -p:2030 -s:192.168.178.22

工作正常。

桌面服务器,笔记本电脑客户端

服务器:cSocketServer -p:2030 -i:192.168.178.22

客户:cSocketclient -p:2030 -s:192.168.178.22

与上述完全相同,但会触发connect failed: 10060错误。这基本上意味着它超时。

仅限桌面(外部地址)

服务器:cSocketServer -p:2030 -i:192.168.178.22

客户:cSocketclient -p:2030 -s:xx.xx.xx.xx

其中 xx.xx.xx.xx 是我的外部IP地址。

相同错误:connect failed: 10060。端口2030绝对是开放和可访问的,因为我测试了一些不相关的应用程序,允许用户选择自己的端口(如utorrent)。当那些运行时,whatismyip.org状态端口2030是开放的。但是当我运行我的应用程序时,它就是超时。这些应用程序在防火墙中没有任何特殊权限。

但是,即使我搞砸了一些防火墙/路由器设置(我相当确定我没有)这也无法解释为什么我无法从本地网络连接到服务器。其他服务(如文件共享)工作正常,因此两台计算机之间肯定存在连接。

客户端和服务器都在Windows 7 64位上运行。

同时;由于某种原因,每个连接的客户端都会分配自己的入站端口或者什么?这是正常的吗?当客户端连接服务器状态时;

Accepted client: 192.168.178.22:55156
Accepted client: 192.168.178.22:55164
Accepted client: 192.168.178.22:55176

那是什么意思?

2 个答案:

答案 0 :(得分:1)

如果两个TCP连接具有相同的源IP,目标IP,源端口和目标端口,则无法区分它们。为确保它们在某处不同,客户端通常会为每个出站连接分配一个唯一的源端口。

至于错误,你真的需要做一些故障排除。听音插座是否出现在'netstat'中?关闭防火墙后会出现同样的问题吗?服务器和客户端是否在同一个LAN上(对于内部地址情况)?端口转发是否已启用并在路由器中工作(对于外部地址情况)?

我敢打赌,外部地址案例不起作用,因为您没有将端口配置为由路由器转发,或者您的路由器不支持发夹(本地访问外部IP)。其他程序可能有效,因为它们支持UPnP或不依赖发夹(所有对外部IP的访问都来自LAN外部。)

我没有立即解释为什么您的桌面到笔记本电脑无法在局域网内工作。你确定两台计算机都在同一个局域网中吗?他们可以相互ping吗?

答案 1 :(得分:0)

删除服务器的-i参数,或指定0.0.0.0并修复代码,使其不被视为错误,这本身就是一个错误。