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 に答える