Я читал этот пример winsock .
Я пытаюсь осмыслить, как создать клиентскую программу C ++, которая имеет постоянное соединение TCP / IP с сервером C # .NET.
Проблема, которую я вижу, состоит в том, что для того, чтобы клиент C ++ мог выйти из цикла приема, сервер должен закрыть свое сокетное соединение с клиентом.
В моем случае сервер будет отправлять клиенту каждые пару секунд. Мне нужно иметь возможность получить один пакет с сервера и перезапустить основной цикл программы, чтобы клиент мог выполнить все остальные функции.
Если этот код приема находится в основном цикле клиента 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 );