python - 尝试将套接字连接到不同网络中的服务器会引发 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:我已经阅读了许多与此问题相关的问题,但它们似乎对我的情况没有帮助。
解决方案
如果您尝试访问您的服务器不是从同一主机,你不能。您需要不在本地主机模式下运行服务器,将服务器 ip 绑定更改为“0.0.0.0”,它应该可以工作。
推荐阅读
- arrays - 用逗号、空格和数字构建两个数组并打印出来
- wordpress - 包装盒中的 Woocommerce 运输产品
- sql - Firebird 如何在 ORDER BY 中使用带有子查询列的 IIF
- java - JWT getPrincipal 错误,对 Authentication 的引用不明确
- r - 如何设置打印回归残差/拟合值的表格以一次显示多列?
- java - 逻辑问题 - 以特定格式显示数字
- r - 在许多响应包含多个类别的 R 中,处理分类数据的最佳方法是什么?
- c - 我不知道如何把它放在第一行
- python - 基于 col[a]==Value 填充 col[c]
- azure - 注册的应用程序未出现在 AAD B2C 身份体验框架中以运行自定义策略