自写sniffer捕捉包转发,头疼中,请高手帮忙分析问题,问题内详
A机器(设192.168.0.1)为监视机器,运行抓包转发程序sniffer_trans,抓包线程抓流经该机器的IP数据包,转发线程转发捕捉到的特定数据包
B机器(设192.168.0.2)为客户机器,运行接收程序sniffer_recv,与A机器上的捕包程序连接,并接收转发来的数据(运行的程序初始为发送一个需要监视的IP给A机器上的捕包程序)如发送192.168.0.3,则A机器上的程序将所有流经其网卡的IP包、源目标地址为192.168.0.1 / 192.168.0.3 、协议为TCP的IP包转发给B机上客户程序存在的问题:
在192.168.0.1上运行一个server_test,在192.168.0.3上运行client_test,然后用client_test批量发送数据,如果发送速度特别快,则192.168.0.2上的sniffer_recv仅能接收到很少的几条,然后就会堵塞在recv函数上,再也接收不到数据,但是192.168.0.1上的sniffer_trans显示发送仍然正常如果发送的很慢就不会存在该问题
请高手帮忙分析一下,是什么问题,我已经给搞得焦头烂额了,
发送与接收数据的代码很少,看来看去没看出哪里出了问题
A机器(设192.168.0.1)为监视机器,运行抓包转发程序sniffer_trans,抓包线程抓流经该机器的IP数据包,转发线程转发捕捉到的特定数据包
B机器(设192.168.0.2)为客户机器,运行接收程序sniffer_recv,与A机器上的捕包程序连接,并接收转发来的数据(运行的程序初始为发送一个需要监视的IP给A机器上的捕包程序)如发送192.168.0.3,则A机器上的程序将所有流经其网卡的IP包、源目标地址为192.168.0.1 / 192.168.0.3 、协议为TCP的IP包转发给B机上客户程序存在的问题:
在192.168.0.1上运行一个server_test,在192.168.0.3上运行client_test,然后用client_test批量发送数据,如果发送速度特别快,则192.168.0.2上的sniffer_recv仅能接收到很少的几条,然后就会堵塞在recv函数上,再也接收不到数据,但是192.168.0.1上的sniffer_trans显示发送仍然正常如果发送的很慢就不会存在该问题
请高手帮忙分析一下,是什么问题,我已经给搞得焦头烂额了,
发送与接收数据的代码很少,看来看去没看出哪里出了问题
解决方案 »
- 谁解释一下每行都什么意思?给添下注释
- 我在开发一个使用飞天诚信的epass 2000 的程序,请大家帮忙。
- 高手进来下
- 静态成员函数怎样使用类里的其它成员变量?
- 再问一个CListCtrl,为什么鼠标只能在第一列点?
- UDP的recvfrom函数,只要绑定端口,好像从该端口发送来的数据都能接收,我想只接收某个ip发送来的信息,该怎么做?
- 如何将一个bmp生成一个位图类啊?给100分
- 请教大侠如何在CFormView中加上背景位图?
- 鼠标移动到浮动窗口上就出错???????????????
- 如何将CTime类型的值转化成CString类型呢?
- 郁闷:Invalid Address specified to RtlValidateHeap,这个错误该怎么办
- Windows 2003支持颜色调色板位数
这个工具是为了方便分析应用程序报文的,如果你做过sniffer类似程序(不要是玩味的就好),帮忙分析一下代码我的msn:
[email protected]
聚集算法? Nagle算法?