0

私はC++でサーバーを開発していて、whileループでrecv()を使用すると、常に-1の長さを返し、ブロックせずにループを続行します。

while(true)
{
   char buffer[1024];
   int dataLength =  recv(socket, buffer, 1024, 0)
   cout << dataLength;
}

出力:-1-1-1-1-1-1-1-1-1............。

データを受信するまでこのソケットをブロックする方法を知っている人はいますか?

前もって感謝します!

4

2 に答える 2

2

初期化中にエラーが発生している可能性があります。GetLastError() を呼び出して、呼び出しごとに結果を出力してみてください。

于 2012-06-16T16:39:10.087 に答える
0

ジェームズが提案したように、ソケットエラーが発生したかどうかを確認してください。recv()のデフォルトの動作はブロックです。こちらのスレッドも参照してください。

于 2012-06-16T16:10:22.490 に答える