ソケット通信に標準のWinSock関数を使用していますが、ソケットを作成し、プログラムが突然終了したとします。ソケットがアクティブなままになる可能性はありますか?
少し例を試してみました。最初に返されたAPIの呼び出しは、実行可能ファイルを突然終了した後、socket
返されたAPIの2番目の呼び出しです。4986
socket
4946
しかし、私はまだ、閉じていなくてもソケットがしばらくの間アクティブなままであると感じています。
私の疑問を明確にするのを手伝ってください
ソケット通信に標準のWinSock関数を使用していますが、ソケットを作成し、プログラムが突然終了したとします。ソケットがアクティブなままになる可能性はありますか?
少し例を試してみました。最初に返されたAPIの呼び出しは、実行可能ファイルを突然終了した後、socket
返されたAPIの2番目の呼び出しです。4986
socket
4946
しかし、私はまだ、閉じていなくてもソケットがしばらくの間アクティブなままであると感じています。
私の疑問を明確にするのを手伝ってください
Linux マシンでは、プログラムでソケットを開き、プログラムを不用意に閉じた場合、つまりプログラムをクラッシュさせた場合、ソケットは開いたままになります。このシナリオでは、一定期間が経過すると、オペレーティング システムはこれらのバインドされたソケットをクリーンアップします (どれくらいの長さかはわかりませんが、OS のどこかで 10 分未満であると指定されていると思います)。
http://compgroups.net/comp.os.ms-windows.programmer.win32/bind-error-after-crash-ho/368539 これは、クラッシュした後、または閉じるのを忘れた後でも WinSock が開いたままになることを意味すると思いますあなたのアプリケーションで。Windowsがこれらの開いているソケットをどのように処理するかはわかりませんが、Linuxに似ていると推測し、一定期間が経過した後にそれらを閉じます