Python - 套接字错误,正在使用的地址

时间:2013-02-08 03:45:08

标签: python sockets ssl

我正在尝试在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

我坚持要做什么,因为这是设置此应用程序的最后一部分。任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

当按下^ C或^ Z时python程序无法正常退出时,通常会发生这种情况。您可以尝试重置终端或退出终端。您也可以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)

答案 2 :(得分:2)

即使端口号超过1024

,我也收到了该错误

您可以使用

    pkill -9 python

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

答案 3 :(得分:1)

列出您使用

运行的所有流程
ps -a

获取与python相对应的PID并使用(示例PID 2770)

将其输入kill命令
kill -9 2770