【发布时间】:2014-02-09 03:29:51
【问题描述】:
我正在制作一个小程序,它具有在同一台机器上进行通信的服务器和客户端,确实如此。但我无法让服务器等待接收来自客户端的消息。为什么循环不像第一次那样在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() 之类的系统调用中收到错误时,您必须打印它,而不仅仅是您自己设计的一些消息。否则调试就变成了一场猜谜游戏。
标签: c++ visual-c++ networking