我正在制作一个小程序,它有一台服务器和客户端在同一台机器上进行通信,这是。但是我无法让服务器等待从客户端收到消息。为什么循环不会像第一次那样等待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