socket.error: \[Errno 48\] 地址已被使用

新手上路,请多包涵

我正在尝试从 mac 终端使用 python 设置服务器。

我导航到文件夹位置使用:

 python -m SimpleHTTPServer

但这给了我错误:

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

我之前在我机器的不同位置使用相同的命令为不同的网站打开了一个连接。

原文由 irm 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 443
2 个回答

您已经有一个进程绑定到默认端口 (8000)。如果您之前已经运行过相同的模块,则很可能该进程仍绑定到该端口。首先尝试找到其他进程:

 $ ps -fA | grep python
  501 81651 12648   0  9:53PM ttys000    0:00.16 python -m SimpleHTTPServer

包含命令参数,因此您可以发现正在运行的 SimpleHTTPServer 如果多个 python 进程处于活动状态。您可能想测试 http://localhost:8000/ 是否仍然显示本地文件的目录列表。

第二个数字是进程号;通过向服务器发送信号来停止服务器:

 kill 81651

这会发送一个标准的 SIGTERM 信号;如果该过程没有响应,您可能不得不采取更严格的方法,例如发送 SIGKILL ( kill -s KILL <pid>kill -9 <pid> ) 信号-。有关 详细信息,请参阅维基百科

或者,通过在命令行上指定备用端口,在 不同 的端口上运行服务器:

 $ python -m SimpleHTTPServer 8910
Serving HTTP on 0.0.0.0 port 8910 ...

然后以 http://localhost:8910 访问服务器;其中 8910 可以是 1024 及以上的任何数字,前提是端口尚未被占用。

原文由 Martijn Pieters 发布,翻译遵循 CC BY-SA 3.0 许可协议

简单解决方案:

  1. 使用端口 8080 查找进程:
 sudo lsof -i:8080

  1. 终止该端口上的进程:
 kill $PID

kill -9 $PID  //to forcefully kill the port

PID 是从步骤 1 的输出中获得的。

原文由 Snail 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题