【发布时间】:2019-01-30 18:00:23
【问题描述】:
在使用 Python 的 socket 模块创建客户端时,我遇到了OSError: [WinError 10022] An invalid argument was supplied,我对它的原因以及如何管理它感到困惑。
不管怎样,我使用的是 Windows 10。
简单来说,目标代码围绕着连接过程展开:
import socket
client = socket.socket()
hostname = socket.gethostname()
port = 50007
while (True):
client.settimeout(0.1)
try:
client.connect((hostname, port))
except socket.timeout:
print("timeout")
continue
else:
. . .
返回:
timeout
Traceback (most recent call last):
File "C:/testClient.py", line 12, in <module>
client.connect((hostname, port))
OSError: [WinError 10022] An invalid argument was supplied
诚然,这个错误只有在引入超时内容后才会出现。如输出所示,它成功超时一次,但第二次重试失败。
我在hostName 和port 变量超时后检查了它,但它们并没有改变(因为它们不应该改变)。
我让系统处于超时循环的唯一原因是因为我还将 tkinter 模块用于用户界面,并且我希望 UI 不断更新,这样程序就不会停止响应。我只想让连接在超时时重试。
我做错了什么?
【问题讨论】:
-
hostname的值是多少?