【问题标题】:Python - Socket Error, Address In UsePython - 套接字错误,地址正在使用中
【发布时间】:2013-02-08 03:45:07
【问题描述】:

我目前正在尝试在 Xubuntu 12.10 x64 上设置 SiriServer(这不是重点),当我运行服务器时 python 返回错误

socket.error: [Errno 98] Address already in use.

默认情况下,服务器尝试在端口 443 上运行,不幸的是,该应用程序需要该端口才能运行。

要仔细检查端口 443 上是否有任何东西在运行,我执行以下命令:

lsof -i :443

没有结果,除非我打开了 Chrome 或 Firefox 之类的东西,我最终关闭了它们。这是尝试运行服务器应用程序的全部回报。

dustin@dustin-xubuntu:~/Applications/SiriServer$ sudo python siriServer.py
CRITICAL load_plugins Failed loading plugin due to missing module: 'Wordnik library not found. Please install wordnik library! e.g. sudo easy_install wordnik'
INFO <module> Starting Server
Traceback (most recent call last):
  File "siriServer.py", line 493, in <module>
    server = SiriServer('', options.port)
  File "siriServer.py", line 425, in __init__
    self.bind((host, port))
  File "/usr/lib/python2.7/asyncore.py", line 342, in bind
    return self.socket.bind(addr)
  File "/usr/lib/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use

我不知道该怎么做,因为这是设置此应用程序的最后一部分。任何帮助表示赞赏。

【问题讨论】:

  • 您是以 root 身份运行 lsof 还是使用 sudo 运行?

标签: python sockets ssl


【解决方案1】:

你不是 root - 那是你的问题。要在 Unix 上绑定到 1024 以下的端口,您必须是超级用户。所以,点击su 并再次尝试 python 代码。或者,绑定到从 1024 到 65535 的端口。

【讨论】:

  • 我在命令开头运行 sudo,不是以 root 身份运行吗?
  • 应该是,获取netcatnc localhost 443 看看是否有任何东西在监听端口。
【解决方案2】:

当python程序在按下^C或^Z时没有正确退出时,通常会发生这种情况。您可以尝试重置终端或退出终端。你也可以killall -9 server.py

另一种有效的方法来帮助防止这种情况,即使您有 root 权限,如果套接字未正确关闭,可能会发生这种情况,这里有一个修复方法:

s=socket.socket( )
s.bind(("0.0.0.0", 8080))
while 1:
    try:
        c, addr = s.accept()
    except KeyBoardInterrupt:
        s.close()
        exit(0)

【讨论】:

    【解决方案3】:

    即使端口号超过 1024,我也会收到该错误

    你可以使用

        pkill -9 python
    

    运行命令两次,它将列出所有被杀死的python文件

    【讨论】:

    • 小心杀死Ubuntu系统上的所有python进程,因为你可能会破坏你的会话
    【解决方案4】:

    列出您正在运行的所有进程

    ps -a
    

    获取python对应的PID并将其通过管道传递到kill命令中(示例PID 2770)

    kill -9 2770
    

    【讨论】:

      猜你喜欢
      • 2015-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-20
      • 2016-09-22
      • 1970-01-01
      • 2021-05-21
      • 2011-09-16
      相关资源
      最近更新 更多