问题:C++ Socket通信的时候,第一次客户端可以收到服务器端的消息,第二次收不到,再之后有时候可以收到,有时候收不到,但服务器端有反应
服务器端的内容:
客户端的内容:
服务器端代码:
while (true)
{
int Recv = recv(client_fd,recvBuf,sizeof(recvBuf),0); //接受来自客户端的内容
if (Recv<0)
{
cout<<"Error: Receive info from server failed!"<<endl;
return -1;
}
cout<<"*********************************"<<endl;
cout<<"查询次数:"<<queryCount<<endl;
cout<<"receive data: "<<recvBuf<<endl;
MYSQL_RES* resX = mysql.QueryData(recvBuf);
vector<float> dbData;
dbData=mysql.PrintQueryResXYZ();
int querySize = dbData.size();
mysql.vec2string(dbData,strSendBuf,querySize); //vector转换成string类型
cout<<strSendBuf<<endl;
char sendBuf[99999]={0}; //发送 1024
strcpy(sendBuf,strSendBuf.c_str()); //string转换成char[]
cout<<"查询到的数量:"<<dbData.size()<<endl;
queryCount++;
cout<<"发送给客户端的数据..."<<endl;
int Write = write(client_fd,sendBuf,sizeof(sendBuf));
//int Send = send(client_fd,(char*)sendBuf,sizeof(sendBuf),0); //发送给客户端
if (Write<0)
{
cout << "Error: Send info to server failed !"<<endl;
return -1;
}
cout<<"给客户端发送完成!"<<endl;
cout<<"*********************************"<<endl;
}
客户端代码:
if (receive > 0)
{
cout << "从服务器端开始接收:" << recvbuf << endl;
while (true)
{
char input[1024] = {0}; //键盘输入的字符
receive = 0;
cout << "发送给服务器端的内容:";
cin.getline(input, 1024); //cin以空格为分隔,输入的字符串中有空格的时候,会被分开
if (!strcmp(input,"exit")) //输入exit直接退出
{
send(Socket, input, sizeof(input), 0);
return 0;
}
int Send = send(Socket, input, sizeof(input), 0);
memset(recvbuf, '\0', sizeof(recvbuf));
//cout << receive << endl;
receive = recv(Socket, recvbuf, sizeof(recvbuf), 0);
if (receive >= 0)
{
cout << "从服务器端接收到的内容:\n" << recvbuf << endl;
}
}
}
第二次查询时候,客户端的代码直接从第45行跳转到了第50行,48行的recv似乎没有执行