Chào các bạn, mình hiện đang gặp trục trặc trong quá trình truyền dữ liệu dạng double từ client tới server qua TCP/IP. Về nguyên lí, sau khi connect thành công, sẽ thực hiện lệnh send(socketClient, (char*)&Data_Send, sizeof(Data_Send), 0).
Mình đã tạo biến stringstream ss và string res để chuyển dữ liệu userDataBuffer từ dạng double sang char rồi lưu vào biến Data_Send. Nhưng khi mình gửi dữ liệu thì phía server hiển thị: Date Time Current Voltage Air-Pressure 000000000000000000000000000000000000000…
Mình có thử vài phương pháp khác nhưng cũng chỉ ra dữ liệu trống. Mong các bạn gợi ý cách xử lí vấn đề này. Dưới đây là code của mình
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);
}