特定のTCPポートをリッスンするコードがあります。ただし、このコードを停止してすぐに再起動するとエラーが表示されます。
ERROR: could not bind to socket on 0.0.0.0:7700
1分待つと、突然ポートが「使用可能」になり、コードが再実行されます。
私の質問:この特定のポートを強制的に「アイドル」状態にする方法はありますか? 1分ほど待たずにすぐにコードを起動できますか?
答え1
あなたはそれを使用することができますSO_REUSEADDR
int optval = 1;
/* create socket using socket */
setsockopt(s1, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof optval);
/* bind socket */
このエラーは、TCPプロトコルがサーバーが閉じたばかりのソケットTIME_WAIT
をnet.ipv4.tcp_fin_timeout
。これは、サーバーがソケットを閉じた後でも他のピアが送信できるすべてのパケットがまだ正しく処理されるようにするためです。
このスレッドの最良の答えで問題の良い説明は次のとおりです。SO_REUSEADDR(setsockoptオプション)とはどういう意味ですか - Linux?。