raw socket WIN2K SNIFFER 接收IP包完全否的问题。。

ajiva 2004-04-20 03:05:49
在接收线程里面
char buf [1000];
int nret = recv(buf ,1000,...);
是否每次接收的 都是一个完整的包???
或者是完整的多个包
或者是几个包,但是最后一个包不完整???

同样的
用的SELECT 方式呢?
...全文
80 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lu_zi 2004-04-25
  • 打赏
  • 举报
回复
我只知道在驱动一级ndis上,得到包是一个一个完整的包,当然是说完整的数据包,而不是完整的数据,对于socket,如果你采用的是同步方式,得到的包仍然很可能是完整的数据包,但是如果你采用的是异步的方式得到,这我就不太清楚了,但我觉得应该是一个完整数据包,但不一定应该说大多数时候都不是完整的数据
df8327 2004-04-23
  • 打赏
  • 举报
回复
rawsocket一次应该能接受一个完整的IP包,至于TCP包,碰到过长的可能会被他拆分,具体的过程我也不是很清楚,不过你可以找一个嗅探器看看数据包是什么样子,也许有帮助
ajiva 2004-04-20
  • 打赏
  • 举报
回复
TCP/IP我还是比较熟悉的,也知道那个不可能一次就把数据收到的,
要怎么接收头,再等待接收数据,截取有效的。。。保留下次的。。

这个RAW SOCKET 我今天接收了,但是不知道是否正确
我还在验证。
先获取包长度,再比较接收到的数据长度。。。
。。。
楼上的能给点建议吗?谢谢
月吻长河 2004-04-20
  • 打赏
  • 举报
回复
像你这样做不能保证每次接收的是一个完整的包。
如果你对TCP/IP不熟悉最好不要用Raw Socket,使用类库较好
但从学习知识的角度用Raw Socket很有意思

18,363

社区成员

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

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