Python套接字提供的参数无效

2024-10-02 06:26:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建的python服务器有问题。它在我的家用机上运行,但当我试图在另一台机器上运行时,它就不工作了。使用pyinstaller编译时,窗口立即关闭,当作为原始python文件运行时(python 2.7.10安装在我的主计算机上,也安装在它不工作的机器上)它会抛出错误:

Traceback (most recent call last):
  File "fileModifyServer.py", line 136, in <module>
    startServer()
File "fileModifyServer.py", line 11, in startServer
  serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
File "N:\Python27\lib\socket.py", line 191, in __init__
  _sock = _realsocket(family, type, proto)
socket.error: [Errno 10022] An invalid argument was supplied

它引用的代码如下:

^{pr2}$

Tags: 文件inpy服务器机器计算机错误line
1条回答
网友
1楼 · 发布于 2024-10-02 06:26:57

你的回溯很奇怪。它指示在尝试实例化套接字时的一行,这表示python安装或网络堆栈有问题。它还指示错误发生在第11行,但在您的代码中,有问题的行出现在第6行。我不知道这是怎么发生的,但我知道如果你在程序运行时编辑文件,然后程序崩溃,就会发生这种情况。回溯只是从引起错误的相关文件中打印出行号,而文件源似乎直到错误发生才被读取;因此,回溯将反映修改后的文件中的行,这不是编译程序时出现的行,因此也不是实际导致的行问题。在

不看回溯,我确实看到你的代码有错误。您试图将服务器绑定到无效接口。返回的主机名套接字.gethostname不是接口。From the documentation

If you want to know the current machine’s IP address, you may want to use gethostbyname(gethostname()). 
This operation assumes that there is a valid address-to-host mapping for the host, and the assumption does not always hold.

# for example
local_ip_address = socket.gethostbyname(socket.gethostname())

它将返回本地ip地址的字符串表示形式。不幸的是,这仍然会抛出一个错误,因为它不是一个可以绑定到的接口。在

您可以绑定到的一些接口包括“0.0.0.0”(表示所有可用接口)和“localhost”(仅表示“本地”连接),因此不允许外部网络通信。在

相关问题 更多 >

    热门问题