while (true)
{
int read = recvData(clientSocket, buf, sizeof(buf));
if(read == SOCKET_ERROR)
{
cout<<"Connection with the server is lost. Do you want to exit?" << endl;
string input;
getline(cin,input);
if(input == "yes")
cout<<"test";
}
if(read == SHOW )
{
char *p = strtok(buf, " ");
while (p)
{
cout<<p<<endl;
p = strtok(NULL, " ");
}
}
else if(read == SEND )
{
UDPinfo* info = new UDPinfo;
char *p = strtok(buf, " ");
info->_IP = p;
p = strtok(NULL, " ");
info->_Port= p;
info->_filePath = filePath;
info->_UPDsock = UDPSocket;
//Starting UDP send thread.
_beginthread(UDPsendThread, 0, (void*)info);
}
}
在这个例子中,如果我得到一个套接字错误,我会问用户他是否想通过获取输入来退出程序。然后将该输入与其他值进行比较,在这种情况下,它是一个“是”字符串。但由于某种原因,即使我输入“是”,它也会跳过 if 检查。并打印“与服务器的连接丢失。您要退出吗?” 再次。奇怪的是,如果我再次输入“是”,它就会起作用。我试图通过使用 cin.ignore(); 来修复它。和所有这些东西,但没有解决方案。