これが私の状況です。私は winsock を使用しており、ネットワークとプロトコルの開発についていくつかのことを学んでいますが、行き詰まりに陥っています。私は現在、受け入れ呼び出しでブロックするサーバーを実行していますが、バックグラウンドでユーザー入力を待機し、ユーザー入力を処理する別のスレッドを持っています。このユーザー入力は、send、ping、say などのコマンドに使用されますが、winsock をシャットダウンし、開いているすべての接続を解放し、プログラムを終了する exit というコマンドが必要です。問題は、この受け入れスレッドがまだブロックされていることです。
それでは質問です。1)とにかく、呼び出されている間にwinsock関数がブロックされるのを止める方法はありますか?2)非ブロックモードでは次のようになります:
while(m_continue)
{
Sleep(1);
tempsock = accept(m_listenSock, NULL, NULL);
if(tempsock != INVALID_SOCKET)
{
if(WSAGetLastError() == WSAEWOULDBLOCK)
continue;
else
return 1;
}
break;
{
余分な、または使用するにはあまりにも非効率的ですか?