怎么发送和接收一个数组

myskydog888 2005-04-18 11:45:29
怎么用socket 发送和接收一个数组,数组元素是由一个结构体.
即8583的数据包有128个域
...全文
229 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jwwu 2005-05-07
  • 打赏
  • 举报
回复
发送结构要注意两个问题
一个是结构体必须是连续的内存地址
第二是字节对齐的问题即必须是4个倍数
踏岸寻柳 2005-05-07
  • 打赏
  • 举报
回复
填充该数组,将该数组强制转换一下类型,如(char *)&buf
然后,直接发送(write、send)就是了。

在接收端,按照数组长度(sizeof)接收数据,收到后再强制转换一下类型(数组类型),就可以了。
gaoxianfeng 2005-04-19
  • 打赏
  • 举报
回复
struct A;
struct A a[20];
char* p;

p = (char*)a;

send( , p, sizeof(a), );


server端
struct A;
struct A a[20];
char *p;
p = (char*)a;
recv( , p, sizeof(a), );

qfxx 2005-04-19
  • 打赏
  • 举报
回复
类型转换为char或unsigned char
传输时有两点注意
1传输的字节数一定要和数组总长度相同不要用strlen(buf)
2保证类型转换后,不会出现'\n',否则传输的数据不完整
baoyuhua 2005-04-18
  • 打赏
  • 举报
回复
socket是以字节流的方式传送的,他不会干涉应用层的数据结构问题,如果传送数组的话直接把数组指针和占用内存大小传给send或者sendto即可,recv或者recvfrom也仅以字节流的方式处理,所以接收方的数据结构重新组织由应用程序完成
xfzhao_cn 2005-04-18
  • 打赏
  • 举报
回复
用类型转换就可以了

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧