免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: yuangong
打印 上一主题 下一主题

请教:如何收取tcp协议包? [复制链接]

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
21 [报告]
发表于 2007-11-23 11:32 |只看该作者
原帖由 yuangong 于 2007-11-23 09:45 发表

不是的,你说的返回一个完整的数据包仅仅是在udp的情况下才发生.tcp会收你指定的的字节后返回

谁说的?
先打pp

论坛徽章:
0
22 [报告]
发表于 2007-11-23 11:35 |只看该作者
原帖由 cjaizss 于 2007-11-23 11:32 发表

谁说的?
先打pp

你说不对指的是前半句udp还是后半句tcp收指定的长度?
这里面有一种情况没说,就是socket buffer中数据的长度小于指定的长度,会返回剩下的长度.

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
23 [报告]
发表于 2007-11-23 11:39 |只看该作者
应该把做协议的拖到人妖厕所打PP

如果是SMTP协议
FROM: xx\r\n
TO: xx\r\n
Subject: xxxx\r\n
xxxx
MIME 1.0\r\n
yyy
.\r\n

如果是webmail用HTTP协议
POST xxxx
Content-Length: xxx
Content-Type: xxx
\r\n
xxxxx

这俩都不难解析
非得弄出这种人妖协议
From: xxx
to: xxx
Content-Length: xxx

论坛徽章:
0
24 [报告]
发表于 2007-11-23 11:47 |只看该作者
原帖由 safedead 于 2007-11-23 11:39 发表
应该把做协议的拖到人妖厕所打PP

如果是SMTP协议
FROM: xx\r\n
TO: xx\r\n
Subject: xxxx\r\n
xxxx
MIME 1.0\r\n
yyy
.\r\n

如果是webmail用HTTP协议
POST xxxx
Content-Length: xxx
Content-T ...

呵呵,原型是sip协议,该打老外的pp了.

论坛徽章:
0
25 [报告]
发表于 2007-11-24 13:12 |只看该作者
原帖由 anthony1983 于 2007-11-23 10:51 发表

那是阻塞状态下。。。。。。。。。。。。。!
man recv 中的一段话

If no messages are available at the socket, the receive call
     waits  for  a  message  to arrive, unless the socke ...

楼主指的一个完整的包应该不是一个下层TCP整包,而是这基础之上我们应用定义的一个整包,它可能由1个或多个下层TCP包组成。
比如说一端发送的“应用”包是:
method:1
fromxx
toxx
content_typexx
content_lengthxx

XXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXX
xxx
实际在TCP发送的时候
接收端buffer可能收的是两个TCP层的整包,它俩构成一个应用上的真正意义上的完整的包
第一次的:
  1. method:1
  2. from:xxx
  3. to:xxx
  4. content_type:xxx
复制代码

第二次的:
  1. content_length:xxx

  2. XXXXXXXXXXXXXXXXXXXXXXX
  3. XXXXXXXXXXXXXXXXXXXXXXX
复制代码

论坛徽章:
0
26 [报告]
发表于 2007-11-24 14:29 |只看该作者
原帖由 ljok30 于 2007-11-23 09:34 发表
你不用去关心收上来的是多少个包,你只需要判断包里的内容就可以了!你不是有结束标志吗,就去找结束标志,找到了表示一个包结束了,找不到表示一个包没有结束,就把从上次结束开始到缓冲区尾的所有数据保存到另外一个 ...



同意,而且即使知道了长度,也可能每次长度不一样,做TCP协议的应用必须处理粘包和断帧这两个问题。

论坛徽章:
0
27 [报告]
发表于 2007-11-24 19:53 |只看该作者
原帖由 yuangong 于 2007-11-23 11:47 发表

呵呵,原型是sip协议,该打老外的pp了.


是被中国移动强奸过的SIP协议吧

论坛徽章:
0
28 [报告]
发表于 2007-11-26 13:06 |只看该作者
原帖由 anthony1983 于 2007-11-24 19:53 发表


是被中国移动强奸过的SIP协议吧

呵呵,看来是同道中人啊!

论坛徽章:
0
29 [报告]
发表于 2007-11-26 14:11 |只看该作者
原帖由 anthony1983 于 2007-11-23 10:57 发表
尽量不要用阻塞方式
而是采取select/poll  结合非阻塞方式
因为阻塞方式会导致CPU占用率过高


???????????
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP