首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何通过TCP/IP Winsock发送双类型数据

如何通过TCP/IP Winsock发送双类型数据
EN

Stack Overflow用户
提问于 2019-06-24 11:16:53
回答 1查看 284关注 0票数 0

我尝试通过TCP/IP (Winsock)将传感器数据(双精度类型)从客户端发送到服务器。理论上,连接成功后,我们将执行命令send()。

我使用两个变量: string string ss和string res来存储传感器数据,并将double类型转换为char类型。但当我发送数据时,服务器上显示:日期时间电流电压气压0000000000000000000000000000000000000000000…所有数据均为0。

我尝试了其他方法,但服务器只接收到空值或不正确的值。请建议我如何解决这个问题。下面是我的代码:

代码语言:javascript
复制
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);                
                    }
EN

回答 1

Stack Overflow用户

发布于 2019-06-25 03:02:08

我强烈建议您不要通过网络发送浮点数据。而不是发送此值整数表示。

但如果您真的想这样做,更好的方法是以已知格式(例如IEEE 754)发送数据的二进制表示形式。

例如,您可以这样做:

代码语言:javascript
复制
send(socketClient, (void*)&userDataBuffer[i], sizeof(double), 0); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56729459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档