[解決済み] Pythonです。ソケットをバインドする "アドレスは既に使用されています"
2023-01-16 01:41:07
質問
TCP/IPネットワーク上のクライアントソケットについて質問があります。例えば、私が
try:
comSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
comSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
except socket.error, msg:
sys.stderr.write("[ERROR] %s\n" % msg[1])
sys.exit(1)
try:
comSocket.bind(('', 5555))
comSocket.connect()
except socket.error, msg:
sys.stderr.write("[ERROR] %s\n" % msg[1])
sys.exit(2)
作成されたソケットは、ポート5555にバインドされます。問題は、接続を終了した後
comSocket.shutdown(1)
comSocket.close()
wiresharkを使用すると、私は両方の側からFIN、ACK、ACKでソケットが閉じ、私は再びポートを使用することはできません参照してください。次のようなエラーが発生します。
[ERROR] Address already in use
どうすれば、すぐにポートをクリアして、次回も同じポートを使用できるようになるのでしょうか。
comSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
setsockoptでは解決できないようです ありがとうございました
どのように解決するのですか?
を使用してみてください。
SO_REUSEADDR
ソケットオプションを使ってみてください。
comSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
編集します。
まだお困りのようですね。 というケースがあります。
SO_REUSEADDR
が機能しない場合があります。 ソケットをバインドして、同じ宛先に再接続しようとすると、(
SO_REUSEADDR
が有効になっている) 場合は
TIME_WAIT
はまだ有効です。 しかし、これは異なるホストとポートに接続することを可能にします。
2 つの解決策が思い浮かびます。 再び接続できるようになるまで再試行を続けることができます。 または、クライアントが (サーバーではなく) ソケットを閉じることを開始した場合、魔法のように動作するはずです。
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み] 与えられたキーがすでに辞書に存在するかどうかをチェックする
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] PythonでファイルのMD5チェックサムを計算するには?重複
-
[解決済み] サブフォルダからのインポートモジュール
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 前月の日時オブジェクトを返す
-
[解決済み] PythonでSVGからPNGに変換する
-
[解決済み] Pandasの'Freq'タグにはどのような値が有効ですか?
-
[解決済み] SQLAlchemy - テーブルのリストを取得する
-
[解決済み] PyMongoで.sortを使用する
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] Jupyter (IPython)ノートブックのセッションをpickleして保存する方法
-
[解決済み] Pythonで、ウェブサイトが404か200かを確認するためにurllibをどのように使用しますか?
-
[解決済み] Pythonの文字列の前にあるbという接頭辞は何を意味するのですか?
-
[解決済み] Pythonの辞書にあるスレッドセーフについて