急急急问!(socket通过TCP收到包以后怎么进行取出自己想要的数据)

peter115 2003-10-23 02:26:07
现在是这样的,我现在利用recv接收到一个buf,这个buf的前4个字节表示包的序列号,然后后两个字节表示包的长度,现在我想请问如何取出前面4个字节,
哪位有这个代码演示一下!多谢!
...全文
99 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
peter115 2003-10-23
  • 打赏
  • 举报
回复
我现在是要做一个转发程序,就是首先UDP接收的组播数据以后开始利用TCP进行转发给客户端,现在就是转发的程序在我的本机上测试通过,基本上不会丢多少包,主要是在局域网的其他机器上就丢包很厉害,我的客户端现在是在局域网,我做这个转发的目的就是以后可以转发到Internet上,但是现在局域网里面为什么还会丢包这么严重呢?图象抖动很厉害,对了,我这个是一个网络流媒体传输的程序,请问哪位有这样类似的程序请教我!或peter_xh@sina.com,或你们认为我的问题主要是什么呢?你们有什么好的设计呢?
flinming 2003-10-23
  • 打赏
  • 举报
回复
//我看你得数据好像是固定得,所以发送的时候把这两项组成一个结构发送出去,读取的时候就根据结构读取
孤必有邻 2003-10-23
  • 打赏
  • 举报
回复
问题是,前四个字节是什么格式:
int类型
char[4]
前者
int order;
memcpy(&order,buf,4);
后者
sscanf(buf,"%4d",&order);
flagfly 2003-10-23
  • 打赏
  • 举报
回复
没看清,是前4个字节,改如下:

char a[100];
int id=a[0];
id <<= 8;
id += a[1];
id <<= 8;
id += a[2];
id <<= 8;
id += a[3];

int len=a[4];
len <<= 8;
len += a[5];
flagfly 2003-10-23
  • 打赏
  • 举报
回复
char a[100];
int id=a[0];
id <<= 8;
id += a[1];
int len=a[2];
len <<= 8;
len += a[3];

18,356

社区成员

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

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