gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 15:59:40 24 4
gpt4 key购买 nike

我正在尝试使用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

与上面完全相同,但这会引发连接失败:10060错误。这本质上意味着它超时了。

仅限桌面(外部地址)

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

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

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

同样的错误:连接失败: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

这是怎么回事?

最佳答案

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

对于错误,你确实需要进行一些故障排除。监听套接字是否显示在“netstat”中?关闭防火墙后是否也遇到同样的问题?服务器和客户端是否在同一个 LAN 上(对于内部地址情况)?端口转发是否已启用并在路由器中工作(对于外部地址情况)?

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

我无法立即解释为什么您的台式机到笔记本电脑无法在 LAN 内工作。您确定两台计算机在同一个 LAN 中吗?他们可以相互 ping 吗?

关于c - 套接字服务器不接受来自其他计算机的客户端(连接失败 : 10060),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8548645/

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