java tcp传输数组_如何访问tcp / ip socket服务器端的数组

我是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);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值