を呼び出します。しかし、現在、closesocket()の呼び出しが成功した後でも、リスナーがLISTENING状態に留まるという問題があります。 TIME_WAITを入力しないため、ソケットが再作成されたときに同じリスナーが同じポートに作成されます。クライアントは新しいリスナーに接続できません(おそらく)。 SO_LINGERは0秒に設定されます。ソケットが閉じられているときには保留中の送信はありません。最も古いソケットは、別の状態に目立つことなく約10秒後に閉じるように見えます。 closesocketの呼び出しが成功した(後LISTENING状態でリスナーを保つことができる何WinsockのTCPリスナーが成功したclosesocket後の状態をLISTENINGのままです()私はTCPリスニングソケットが作成され、すぐに障害が発生した場合にSO_REUSEADDRを使用して、同じソケットに再バインドするように設定されている既存のDLLに取り組んでいます
)?
私はあなたが「同じアドレスに再バインド」を意味し、それを取ります。答えは、closesocket()の呼び出しが成功した後にリスニング状態に留まるべきではないということです。パラメータを調べて慎重に値を返すことで、あなたが思っているソケットを閉じていることを確認することをお勧めします。デバッガはあなたの友人です。 – Ben
はい、同じアドレスに再バインドします。デバッグでは、正しいソケットハンドルがclosesocket()に渡されており、ソケットハンドル上のデータブレークポイントはclosesocket()呼び出しの前にトリガされません。ソケットは決して複製されません。 ProcExpで示されたプロセス(最初は実行時に2つ重複する)のリスナーの数に関係なく、closesocket()の有効な呼び出しの後にTIME_WAIT状態にはなりません。 –