5

我以root身份运行以下代码并使用python2.6.1,平台是linux

>>> import socket
>>> serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>>> serversocket.bind((socket.gethostname(), 80))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in bind
socket.error: [Errno 1] Operation not permitted

如何解决这个问题呢

4

1 回答 1

10

有几种可能性。

  • 你不是根。
  • 以前运行的应用程序版本仍在后台保留端口。用名字杀死它。
  • 一个系统守护进程仍然持有该端口,例如 Apache。

请注意,在套接字关闭(服务器已被终止)后,该端口不会立即可用。如果您想确保不再存在的进程不会阻止端口重用,请发出:

serversocket.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) 

在绑定之前。

于 2012-06-21T20:41:25.100 回答