如何得到ip包中正确的端口和序列等信息?

duguyai 2003-08-02 04:59:20
我已取得数据包数据buf(unsigned char*)//via winpcap lib
int off = 0;
...
hdr = (struct bpf_hdr *)(buf+off);
off+= hdr->bh_hdrlen;
ip = (IP*)(buf + off + ETHERNET_HEADER_LENGTH);//结构ip中的数据都是对的(srcadd,dstadrr等)
tcp = (TCP*)((unsigned char*)ip + (ip->HdrLen & IP_HDRLEN_MASK));//我查了很多例程都是这样写的,可是最后得到tcp->srcport等数据都不对,htons,ntohs我都试了可还是不对~ 急~ 望高手指教~!
...全文
74 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
adamw 2003-09-01
  • 打赏
  • 举报
回复
ip = (IP*)(buf + off + ETHERNET_HEADER_LENGTH);//原有的程序
ip = (IP*)(buf);//BUF指的是接受缓冲区
IP是否指向接收数据包的头部?
如果用你原来的(第一行)程序,那么IP就指到什么地方去了?
如果是对的,那么直接应用下面:可以得到TCP包的头部,然后按TCP的协议进行解析就可以了?
tcp = (TCP*)((unsigned char*)ip + (ip->HdrLen)* 4);//我查了很多例
danceflash 2003-08-22
  • 打赏
  • 举报
回复
怎么解决的? ^_^
chinawzg 2003-08-22
  • 打赏
  • 举报
回复
为些事路由会处理的
chinawzg 2003-08-22
  • 打赏
  • 举报
回复
与数据包的类型中的数据结构有关
duguyai 2003-08-12
  • 打赏
  • 举报
回复
自己解决了
zfb7901 2003-08-03
  • 打赏
  • 举报
回复
我这有实例可以做到没有问题!zfb7901@163.com

4,358

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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