我试图从mac终端设置一个python服务器。
我导航到文件夹位置使用:
python -m SimpleHTTPServer
但这给了我错误:
socket.error: [Errno 48] Address already in use
我以前使用相同的命令打开了一个连接 在我的电脑里的不同位置的一个不同的网站。
我试图从mac终端设置一个python服务器。
我导航到文件夹位置使用:
python -m SimpleHTTPServer
但这给了我错误:
socket.error: [Errno 48] Address already in use
我以前使用相同的命令打开了一个连接 在我的电脑里的不同位置的一个不同的网站。
当前回答
您可以使用allow_reuse_address允许服务器重用一个地址。
服务器是否允许重用地址。默认为False,可以在子类中设置以更改策略。
import SimpleHTTPServer, SocketServer
PORT = 8000
httpd = SocketServer.TCPServer(("", PORT), SimpleHTTPServer.SimpleHTTPRequestHandler)
httpd.allow_reuse_address = True
print "Serving at port", PORT
httpd.serve_forever()
其他回答
以防上述解决方案不起作用:
获取进程正在侦听的端口: $ ps ax | grep python 终止进程 $ kill PROCESS_NAME
简单的解决方案:
查找使用端口8080的进程:
sudo lsof -i:8080
终止该端口上的进程:
kill $PID
kill -9 $PID //to forcefully kill the port
PID从步骤1的输出中获得。
您可以使用allow_reuse_address允许服务器重用一个地址。
服务器是否允许重用地址。默认为False,可以在子类中设置以更改策略。
import SimpleHTTPServer, SocketServer
PORT = 8000
httpd = SocketServer.TCPServer(("", PORT), SimpleHTTPServer.SimpleHTTPRequestHandler)
httpd.allow_reuse_address = True
print "Serving at port", PORT
httpd.serve_forever()
简单的一行命令来摆脱它,在终端输入下面的命令,
ps -a
这将列出Python正在使用的所有进程,并在终端中键入下面的命令,
kill -9 (processID)
例如kill -9 33178
我是Python的新手,但经过简单的研究后,我发现这是典型的套接字被绑定。碰巧该套接字仍在使用,您可能需要等待才能使用它。或者,你可以添加:
tcpSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
这将使端口在更短的时间内可用。在我的例子中,它几乎立即使端口可用。