IP报头的字段里,无论IPv4还是IPv6,都有一些保留字段或者不常用的字段
比如IPv6的流标签,还暂未正式的详细定义
所以,可以考虑将其修改为代表某个特定字符的ASCII码对应的二进制值
然后我接收端可以读其字段值 并欢迎成对应的字符
比如a,对应的ASCII码是97 , 97的二进制是1100001 
将其替换某个字段的值,然后接收端解析并转换为a请问各位专家教授:
    用VC ,使用UDP通信,如何编程实现这个转换还原过程?能给出相应的大致代码吗 ?
    winpcap开发包是不是有相应的函数?还是需要自己设计函数?
    
初学,又急用,一时半会还真难到我了~
肯定各位答疑解惑,一起讨论。

解决方案 »

  1.   

    Rawsocket好象可以......不过报头好象有校验的.........改了要重新生成.....
      

  2.   

    这个不行的,你发给协议的只是你要发送的数据,协议会进行加头等处理,除非你更改协议或者不知道hook是否可以,对这个了解不多
      

  3.   

    以前用Raw socket可以自己定义头部发送数据,现在不知道还行不行,用Winpcap是个很好的方法,可以自己手动构造包,自己改相关字段重新计算校验和就可以了接收的话好像就要用Raw socket了,Winpcap只能嗅探,不能截断接收包。不过如果在嗅探的包中过滤自己的包用WinPcap也是一个方法Winpcap 文档,很好懂
    http://www.coffeecat.net.cn/winpcap/html/main.html
      

  4.   

    Winpcap是可以的,但是如果你用winpcap的话,你的所有数据包都要通过winpcap收发,ip,tcp,udp的checksum,还有tcp的序列号都要自己算。
    raw socket在SP2下,MS已经禁止了修改数据包。看来你也只有做成驱动方便点
      

  5.   


    谢谢您的答复~
    我看看Winpcap先~
      

  6.   

    用户态是不可能了,即使是用raw socket
      

  7.   

    估计只能在raw socket上想办法