参考《Windows网络封包截获技术》,写了一个spi动态库dll替换系统winsock2下的基础服务,在dll中实现WSPRrcv函数代替了系统的lpWSPRecv 函数,在该函数中,将数据读取写入本地文件。
问题:在IE7.0,网页打开ftp进行下载,点击某文件右键保存,通过嗅探器ethereal发掘数据,每个方括号之间即是一条数据,数据格式为:nummber,time,source,destination,protocol,info::::::
【163--t--192.168.6.245--192.168.1.3  --ftp--Request:TYPE I--】
【164--t--192.168.1.3  --192.168.6.245--ftp--Responst:200 Type set to I--】
【165--t--192.168.6.245--192.168.1.3  --ftp--Request: PASV--】
【166--t--192.168.1.3  --192.168.6.245--ftp--Response:227 Entering Passive Mode(192,168,1,3,6,133)--】
【170--t--192.168.6.245--192.168.1.3  --ftp--Request:SIZE/software/pvcs/serial.txt--】
【171--t--192.168.1.3  --192.168.6.245--ftp--Response:213  78--】
【172--t--192.168.6.245--192.168.1.3  --ftp--Request:RETR/software/pvcs/serial.ext--】
【173--t--192.168.1.3  --192.168.6.245--ftp--Response:125 data connettion already open;Transfer starting--】
【178--t--192.168.1.3  --192.168.6.245--ftp--Response:226 Transfer complete.--】
一个文件serial.txt下载完成,一共是9条数据信息。但是下载完成以后,在我的dll打印出来的数据中,前八条数据都是存在的,但是唯独见不到第九条数据,也就是ftp服务器通知需求方文件发送完成的数据。但是存在这样一种状况,如果在下载完成serial.txt文件以后,我紧接着下载另一个文件的话,这个时候在两个文件下载打印出来的文件中,就会发现第一个文件下载的第九条数据,它放在第一个文件下载的前八条数据和第二个文件下载的前八条数据之间,位置无疑是正确的。但是第二个文件下载的第九条数据又没有打印出来。具体问题就是,一次下载文件,我的dll无法找到第九条数据??根据嗅探器的嗅探,无疑第九条数据确实已经被下载方计算机接收的。而为什么在第二次下载文件的时候前一个文件的第九条数据又出现了?同样的dll,在ie6下是没有任何问题的,这是否和ie7有关?具体问题出在哪里?要如何解决,请各位多指点一下!!谢谢