首页 > 解决方案 > 尝试将套接字连接到不同网络中的服务器会引发 WinError 10060

问题描述

我正在尝试建立套接字连接,因此我使用 server.py 和 client.py 编写并尝试了此示例代码:

服务器.py:

import socket

port = 5674
ip = socket.gethostbyname(socket.gethostname())

s = socket.socket()
s.bind((ip, port))
s.listen(2)
print('Server is ready')

while True:
    client, address = s.accept()
    print('New connection to {}'.format(address))
    client.send('You are connected to the server!'.encode('utf-8'))

客户端.py:

import socket

ip = ''  # enter ip address of server
port = 5674

s = socket.socket()
s.connect((ip, port))

msg = s.recv(1024).decode('utf-8')
print(msg)

尝试在一台机器上运行它绝对可以正常工作。

在不同网络的不同机器上运行将在 client.py 中给出以下错误消息:

回溯(最后一次调用):文件“D:/Python/01programs/SocketTest/client.py”,第 7 行,s.connect((ip, port)) TimeoutError: [WinError 10060] Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer >bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da >der verbundene Host nicht reagiert hat

-> 英文缩写:try to connect failed 因为连接的主机没有及时响应

这个套接字连接出了什么问题?我会说客户端似乎无法找到服务器并且因此无法连接。

哪一部分出了问题以及如何解决?感谢帮助!

PS:我已经阅读了许多与此问题相关的问题,但它们似乎对我的情况没有帮助。

标签: pythonsocketssocket-timeout-exception

解决方案


如果您尝试访问您的服务器不是从同一主机,你不能。您需要不在本地主机模式下运行服务器,将服务器 ip 绑定更改为“0.0.0.0”,它应该可以工作。


推荐阅读