2012-06-21 37 views
2

我運行下面的代碼爲根,使用python2.6.1,平臺是Linux蟒蛇socket.error操作不允許

>>> 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 

如何解決這個問題

+0

您是否已經有一臺運行在80端口上的Web服務器? – geoffspear

+2

作爲普通用戶,您無法綁定到低於1024的端口。你有沒有嘗試使用root權限? – Zagorax

+0

我也試圖綁定它與端口8888仍然無法正常工作 – big

回答

8

有幾種可能性。

  • 你不是根。
  • 先前運行的應用程序版本仍然在後臺持有該端口。殺死它的名字。
  • 系統守護進程仍在保存該端口,例如Apache。

請注意,在套接字關閉後(服務器已被終止),端口不會立即可用。如果你想確保不存在了進程不能從重用阻塞端口,問題:

serversocket.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) 

之前綁定它。