python 套接字编程中的WinError 10061和WinError 10022仅适用于Windows

niknxzdl  于 2023-01-24  发布在  Python
关注(0)|答案(1)|浏览(129)

我有一个非常简单的Python代码bindconnect到一个端口。它的工作没有任何错误的UbuntuCentOs,但我有一个错误的Windows 10。我关闭了防火墙和防病毒,但它没有帮助。
我的代码:

import socket

port = 9999

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

host = socket.gethostname()

try:
    s.connect((host,port))
except:
    s.bind((host, port))
    s.listen(1)
    print("I'm a server")
    clientsocket, address = s.accept()
else:
    print("I'm a client")

Windows 10上的错误:

Traceback (most recent call last):
  File "win.py", line 11, in <module>
    s.connect((host,port))
ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

During the handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "win.py", line 13, in <module>
    s.bind((host, port))
OSError: [WinError 10022] An invalid argument was supplied

编辑:
我发现我的问题是在Try... Except部分,如果我把这个代码在两个文件中我的问题会解决。但为什么?try except不能在Windows中正常工作?

fkaflof6

fkaflof61#

connect()失败,因为没有服务器套接字侦听(host,port)
bind()失败是因为您无法绑定到主机名,只能绑定到IP地址。除非您只想侦听特定的网络接口,否则您应该绑定到0.0.0.0以侦听所有接口。

相关问题