Я делаю небольшую программу, у которой есть сервер и клиент, которые взаимодействуют на той же машине, что и есть. Но я не могу заставить сервер ждать, чтобы получить сообщение от клиента. Почему цикл не ждет в строке int iRecvA = recv(acceptSocket, machId, STRLEN, 0);
, как это происходит в первый раз? Я перехожу к последнему else
.Почему мой сервер не ждет ответа от клиента?
while (!done)
{
int iRecvA = recv(acceptSocket, machId, STRLEN, 0);
int iRecvB = recv(acceptSocket, serialNum, STRLEN, 0);
if (iRecvA && iRecvB > 0)
{
//stuff
}
else if (iRecvA && iRecvB == 0)
{
cout << "Connection closed\n";
cleanup(acceptSocket);
return 0;
}
else
{
cerr << "ERROR: Failed to receive message\n";
cleanup(acceptSocket);
return 1;
}
strcpy_s(sendMessage, "Activation was successful!\n\n\n");
int iSend = send(acceptSocket, sendMessage, strlen(sendMessage), 0);
if (iSend == SOCKET_ERROR)
{
cerr << "ERROR: Failed to send message\n";
cleanup(acceptSocket);
return 1;
}
}
Когда вы получаете сообщение об ошибке из системного вызова, такого как recv(), вы должны его распечатать, а не просто сообщение своего собственного проекта. В противном случае отладка станет простой гадательной игрой. – EJP