UDP传输binary数据问题。

star119119 2006-09-06 08:27:00
请大家给个思路先。

...全文
151 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xl5338870 2006-09-07
  • 打赏
  • 举报
回复
将你的数据打成一个包,然后用send函数发送就是了。

包的类型自己定义,比如:

struct packhdr {
unsigned short opcode; // 操作码
unsigned short length; // 长度
char payload[1]; // 注意,这里要设置一下内存对齐方式, 使得sizeof(packhdr) = 5
};

opcode :1(Request package), 2(data package), 3(error package), and so on

void SendBinaryData(void *data_want_to_send, int len) {
packhdr* p = malloc(len + sizeof(packhdr));
p.opcode = 2; // data package;
p.length = len + sizeof(packhdr);
memcpy(p.payload, data_want_to_send, len);

send (fd, p, p.length);
}

star119119 2006-09-07
  • 打赏
  • 举报
回复
softrain(曾经的月光,现在的日光)

数据不是很多 一共8个字符位
mimong_lin 2006-09-06
  • 打赏
  • 举报
回复
网络中传输的数据不都是二进制的吗?

在send/sendto中,传输的数据是用(char *)的形式,如果你传输的数据不是char *形式的,都得强制转换成(char *),在计算机中char字符(ASCII)与二进制是很好的对应。。。。
softrain 2006-09-06
  • 打赏
  • 举报
回复
把binary数据分包,每个包定个包头,包头要说明包长和包数据在总数据的偏移位置。
发送方按顺序一个包一个包的发,对方收到一个就确认一个.发送方等到超时没收到对方确认,则认为包丢失,需要重发.最终可以发送完毕.
一个包的大小定在1K比较好.

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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