我正在製作一個小程序,它有一臺服務器和客戶端在同一臺機器上進行通信,這是。但是我無法讓服務器等待從客戶端收到消息。爲什麼循環不會像第一次那樣等待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