我是ccp socket的新手 . 我试图通过套接字发送一个int数组 . 我编写自己的客户端和套接字(两者都在winOS上运行) . 为了使我可以接收int数组类型,我将recvbuffer设置为int []类型并强制它在recv()函数内更改为char . 这是服务器代码的一部分:
int recvbuf[6];
和
iResult = recv(ClientSocket, (char *)&recvbuf, recvbuflen, 0);
结果很好,我可以打印出所有六个数字,这意味着我的客户端运作良好 . 但是,当我将服务器切换到另一个服务器(内置一个sdk并在linux上运行)时,我无法再访问这些数字 .
对于sdk,我的I / O看起来像这样:
typedef BYTE char
unsigned int getData(BYTE * data, unsigned int len)
{
if (_dataFlag == 1)
{
if (len <= DATA_LENGTH)
{
memcpy(data, _receivedData, len);
_dataFlag = 0;
return len;
}
else
{
memcpy(data, _receivedData, DATA_LENGTH);
_dataFlag = 0;
return DATA_LENGTH;
}
}
return 0;
}
我访问_socketData的方式是:
iResult = _tcpSocket.getData(_socketData, MSG_LEN);
int *ptr = (int *)&_socketData;
并使用ptr [i](i = 0 ... 5)来访问这些数字 . 但它不起作用,我没有得到我想要的 . 你们可以解决我的问题,谢谢 .
有代码如何通过客户端发送int数组:
while (1)
{
ifstream infile;
infile.open(open_path);
if (!infile)
cout << "error" << endl;
string str;
double temp;
int length;
int array[6];
cout << "store to vector" << endl;
vector ve;
while (infile >> temp)
{
ve.push_back(temp);
}
for (int i = 0; i < ve.size(); i++)
{
array[i] = ve[i] * 10000;
}
iResult = send(ConnectSocket, (char*)array, (int)sizeof(array), 0);
if (iResult == SOCKET_ERROR) {
printf("send failed with error: %d\n", WSAGetLastError());
closesocket(ConnectSocket);
WSACleanup();
return 1;
}
else {
cout << "success" << endl;
Sleep(500);
}
}