我尝试通过TCP/IP (Winsock)将传感器数据(双精度类型)从客户端发送到服务器。理论上,连接成功后,我们将执行命令send()。
我使用两个变量: string string ss和string res来存储传感器数据,并将double类型转换为char类型。但当我发送数据时,服务器上显示:日期时间电流电压气压0000000000000000000000000000000000000000000…所有数据均为0。
我尝试了其他方法,但服务器只接收到空值或不正确的值。请建议我如何解决这个问题。下面是我的代码:
char Data_Send[10000];
char item[] = " Date\t" "Time\t" "Current\t" "Voltage\t" "Air-Pressure\t";
string res;
stringstream ss;
strcpy(Data_Send, item);
for (int32 i = 0; i < returnedCount; i = i + channelCount)
{
ss << userDataBuffer[i]; // Sensor data
ss >> res;
strcat(Data_Send, (char*)&res);
}
if (connect(socketClient, (sockaddr*)&clientAddr, sizeof(clientAddr)) == 0)
{
cout << "\nConnection success..!";
cout << "\nConnect with Server's IP: " << inet_ntoa(clientAddr.sin_addr);
cout << "\nStart communicating";
cin.getline(Data_Send, 5120);
send(socketClient, (char*)&Data_Send, sizeof(Data_Send), 0);
}
发布于 2019-06-25 03:02:08
我强烈建议您不要通过网络发送浮点数据。而不是发送此值整数表示。
但如果您真的想这样做,更好的方法是以已知格式(例如IEEE 754)发送数据的二进制表示形式。
例如,您可以这样做:
send(socketClient, (void*)&userDataBuffer[i], sizeof(double), 0);
https://stackoverflow.com/questions/56729459
复制相似问题