我正在尝试编写一个简单的服务器-客户端应用程序,它应该做的是:客户端连接到服务器,服务器等待消息,客户端从用户那里获取输入,并将其发送到服务器。服务器收到此消息,并将其发送回客户端,客户端打印消息并循环并重新开始。但是,由于某种原因,我遇到了一个相当奇怪的问题:当我发送第一条消息时,服务器会响应它,当我发送第二条消息时,服务器会再次响应第一条消息。当我发送第三条消息时,服务器会响应第二条消息,依此类推。
这是我处理连接的服务器代码:
class themusers {
char ReMessage[200],SeMessage[200];
public:
void * HandleConnections(SOCKET connector,int location) {
std::string Converter;
for (;;) {
if (recv(connector,ReMessage,sizeof(ReMessage),NULL) == -1)
std::cout << "Disconnected." << std::endl;
discon.lock();
sock_connection[location] = NULL;
discon.unlock();
break;
}
else {
//this is the code that handles the receive/send operation
msgmut.lock();
//std:: cout << ReMessage << std::endl;
memcpy(SeMessage, ReMessage, sizeof(ReMessage));
send(connector, SeMessage, sizeof(SeMessage), NULL);
msgmut.unlock();
}
}
return NULL;
}
};
这是我的客户代码:
for (;;) {
cin >> tell;
send(sock, tell, sizeof(tell), NULL);
recv(sock,Message,sizeof(Message),NULL);
Converter = Message;
cout << "Server: " << Converter << endl;
}