私はthis winsock exampleを読んでいました。サーバーソケットを閉じずにC++クライアントのメインループでデータを受信するにはどうすればよいですか?
C#.NETサーバーへの永続的なTCP/IP接続を持つC++クライアントプログラムを作成する方法を概念化しようとしています。
私が見る問題は、C++クライアントが受信ループを離れるためには、サーバーがクライアントとのソケット接続を閉じる必要があることです。
私の場合、サーバーはカップル秒ごとにクライアントに送信します。サーバーからパケットを1つ受信してメインプログラムループを再開し、クライアントが残りの機能を実行できるようにする必要があります。
これはコードを受け取った場合は、C++クライアントのメインループの中で、サーバーがクライアントへの接続を閉じたことがない場合、クライアントは受信を停止することはありません。ここで
// Receive until the peer closes the connection
do {
iResult = recv(ConnectSocket, recvbuf, recvbuflen, 0);
if (iResult > 0)
printf("Bytes received: %d\n", iResult);
else if (iResult == 0)
printf("Connection closed\n");
else
printf("recv failed with error: %d\n", WSAGetLastError());
} while(iResult > 0);
は*ループ内で*あなたの他の仕事を入れてください。 –
SOは質問と回答のサイトであり、ブログではありません。質問がある場合は、あなたの投稿にそれを含めてください。 –
ノンブロッキングソケットを使用して選択します。 –