私は次のようなPythonを少し使っています:
HOST = '127.0.0.1'
PORT = 43434
single = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
single.bind((HOST, PORT))
except socket.error as e:
# Print an error, exit.
過去にはうまく機能していましたが、現在はエラーが発生します[Errno 98] Address already in use
。SIGINT ハンドラーはソケット接続を閉じるため、どのようにしてその状態になったのかはわかりませんが、今のところ修正しようとしています。
両方とも、そのポートを使用しているものは何もないlsof
と言います:netstat
[$]> sudo netstat -an | grep 43434
[$]> sudo lsof -i :43434
TIME_WAIT
に従って 60 秒に設定されて/proc/sys/net/ipv4/tcp_fin_timeout
いますが、最後の実行が正常に完了してから数時間後にエラーが発生します。
REUSEADDR
(一時的に)設定(経由)を試みましsingle.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
たが、効果がないようです。
ターネーションで何が起こっているのですか?マシンを再起動しなくても、このポートを再び使用できるようになりますか?