winsocket如何以包的形式发送数据,

csl435 2007-03-07 04:53:23
winsocket如何以包的形式发送数据,接收端如何保证接收到正确数据,向高手请教。
最好有例程谢谢。。。。。。
...全文
384 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
vcayi 2007-04-10
  • 打赏
  • 举报
回复
一般的做法是定义一个包头,一个包体,
包头一般如下
struct head
{
int type;//包类型 比如1为注册。2为注销等等 自定义的
int bodylen;包体长度
下面可以自己根据需要扩充
....
};
包体怎么定义都行了(不用的业务功能可以不同)
比如
struct Body1
{
int test;
char buffer[100];
};

struct Body2
{

char buffer2[200];
long test;
};

发送的时候可以先发包头再发包体


head head1;
head1.type = 1;
head1.bodylen =sizeof(Body1);
send(socket,&head1, sizeof(head));
Body1 body1;
memset(&body1,0,sizeof(body1));
body1.test =100;
strcpy(body1.buffer,'dfsdfsd',7);
send(socket,&body1, sizeof(body1));

接受的时候要先收包头然后根据包头里面的长度字段来决定要接受多长的包体














kakashi0309 2007-04-09
  • 打赏
  • 举报
回复
定义个数据包结构 这样可以保证接收完全~~
wanderfox 2007-04-09
  • 打赏
  • 举报
回复
参考tftp?
CathySun118 2007-04-09
  • 打赏
  • 举报
回复
如果要保证数据正确,自己加上包头,包尾和校验和
cxf_ksword 2007-04-09
  • 打赏
  • 举报
回复
自己定义个结构体(data_info)来封装数据
发送时,一整个结构地发送:
send(socket,&data_info, sizeof(data_info))
接收端时,整个结构地接收:
data_info e;
recv(socket,&e, sizeof(data_info))

之后就像平时用结构一样直接读取数据出来
用TCP传输是基本保证数据正确性的
fox1999 2007-04-09
  • 打赏
  • 举报
回复
要自己处理封包,拆包,组包
ReverseEngineering 2007-04-08
  • 打赏
  • 举报
回复
路过一顶

18,357

社区成员

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

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