我正在尝试通过TCP / IP(Winsock)从客户端向服务器发送传感器数据(双重类型)。从理论上讲,成功连接后,我们将执行send()命令。
我使用2个变量:stringstream ss和string res来存储传感器数据并将double类型转换为char类型。但是当我发送数据时,在服务器上显示:日期时间当前电压气压000000000000000000000000000000000000000…所有数据均为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);
}
答案 0 :(得分:0)
我强烈建议您不要通过网络发送浮点数据。而不是发送此值的整数表示。
但是,如果您真的想这样做,更好的方法是以已知格式(例如IEEE 754)发送数据的二进制表示形式。
例如,您可以通过以下方式做到这一点:
send(socketClient, (void*)&userDataBuffer[i], sizeof(double), 0);