资源简介
用winpcap在局域网实现文件传输 自己定义包结构

代码片段和文件信息
#include
#include
#include
#include
#include
#include “packet.h“
#pragma comment (lib“wpcap“)
unsigned char *source_mac=NULL; //本机MAC地址//一个pcap实例
int main()
{
pcap_if_t *alldevs;
pcap_if_t *d;
int inum;
int i=0;
pcap_t *adhandle;
int res;
char errbuf[PCAP_ERRBUF_SIZE];
struct pcap_pkthdr *header;
const u_char *pkt_data;
/* 获取本机设备列表 */
if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING NULL &alldevs errbuf) == -1)
{
fprintf(stderr“Error in pcap_findalldevs: %s\n“ errbuf);
exit(1);
}
/* 打印列表 */
for(d=alldevs; d; d=d->next)
{
printf(“%d. %s“ ++i d->name);
if (d->description)
printf(“ (%s)\n“ d->description);
else
printf(“ (No description available)\n“);
}
if(i==0)
{
printf(“\nNo interfaces found! Make sure WinPcap is installed.\n“);
return -1;
}
printf(“Enter the interface number (1-%d):“i);
scanf(“%d“ &inum);
if(inum < 1 || inum > i)
{
printf(“\nInterface number out of range.\n“);
/* 释放设备列表 */
pcap_freealldevs(alldevs);
return -1;
}
/* 跳转到已选中的适配器 */
for(d=alldevs i=0; i< inum-1 ;d=d->next i++);
/* 打开设备 */
if ( (adhandle= pcap_open(d->name // 设备名
65536 // 要捕捉的数据包的部分
// 65535保证能捕获到不同数据链路层上的每个数据包的全部内容
0 // 模式
-1 // 读取超时时间
NULL // 远程机器验证
errbuf // 错误缓冲池
) ) == NULL)
{
fprintf(stderr“\nUnable to open the adapter. %s is not supported by WinPcap\n“ d->name);
/* 释放设列表 */
pcap_freealldevs(alldevs);
return -1;
}
printf(“\nlistening on %s...\n“ d->description);
/* 释放设备列表 */
pcap_freealldevs(alldevs);
//获取本机MAC
source_mac = GetSelfMac(d->name+8); //+8以去掉“rpcap://“
//获取文件数据并存储
HANDLE hfile;
int num=0;
/* 获取数据包 */
while((res = pcap_next_ex( adhandle &header &pkt_data)) >= 0)
{
if(res == 0)
/* 超时时间到 */
continue;
packet pack;
memcpy(&packpkt_data22);
bool bflag=0;
for(int i=0;i<6;i++) //判断是否是自己发出的包
{
if( pack.eth.source_mac[i]!=source_mac[i] )
{
bflag=1;
break;
}
}
if( bflag && ntohs(pack.eth.eh_type)==0xffff )
{
//构造回复包
packet ackpack;
BYTE ackpackbuf[22];
memcpy(ackpack.eth.dest_macpack.eth.source_macsizeof(ackpack.eth.dest_mac));
memcpy(ackpack.eth.source_macpack.eth.dest_macsizeof(ackpack.eth.source_mac));
memcpy(&ackpack.et
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 32768 2010-07-14 00:26 文件传输\receivefile\Debug\receivefile.exe
文件 384428 2010-07-14 00:26 文件传输\receivefile\Debug\receivefile.ilk
文件 551936 2010-07-14 00:26 文件传输\receivefile\Debug\receivefile.pdb
文件 7574 2010-07-14 00:26 文件传输\receivefile\receivefile\Debug\BuildLog.htm
文件 65 2010-07-14 00:26 文件传输\receivefile\receivefile\Debug\mt.dep
文件 663 2010-06-11 11:04 文件传输\receivefile\receivefile\Debug\receivefile.exe.em
文件 728 2010-06-11 11:04 文件传输\receivefile\receivefile\Debug\receivefile.exe.em
文件 621 2010-07-14 00:26 文件传输\receivefile\receivefile\Debug\receivefile.exe.intermediate.manifest
文件 43371 2010-07-14 00:26 文件传输\receivefile\receivefile\Debug\receivefile.obj
文件 723968 2010-07-14 00:26 文件传输\receivefile\receivefile\Debug\vc90.idb
文件 151552 2010-07-14 00:26 文件传输\receivefile\receivefile\Debug\vc90.pdb
文件 0 2010-07-13 21:13 文件传输\receivefile\receivefile\file.txt
文件 692 2010-07-13 22:47 文件传输\receivefile\receivefile\packet.h
文件 5565 2010-07-14 00:26 文件传输\receivefile\receivefile\receivefile.cpp
文件 4095 2010-06-11 11:02 文件传输\receivefile\receivefile\receivefile.vcproj
文件 1421 2010-07-14 00:40 文件传输\receivefile\receivefile\receivefile.vcproj.liyanbing-PC.liyanbing.user
文件 12766208 2010-07-14 00:40 文件传输\receivefile\receivefile.ncb
文件 899 2010-06-09 23:20 文件传输\receivefile\receivefile.sln
..A..H. 12800 2010-07-14 00:40 文件传输\receivefile\receivefile.suo
文件 34304 2010-07-15 16:05 文件传输\sendfile\Debug\sendfile.exe
文件 377692 2010-07-15 16:05 文件传输\sendfile\Debug\sendfile.ilk
文件 535552 2010-07-15 16:05 文件传输\sendfile\Debug\sendfile.pdb
文件 9426 2010-07-15 16:05 文件传输\sendfile\sendfile\Debug\BuildLog.htm
文件 65 2010-07-15 16:05 文件传输\sendfile\sendfile\Debug\mt.dep
文件 663 2010-07-15 15:02 文件传输\sendfile\sendfile\Debug\sendfile.exe.em
文件 728 2010-07-15 15:02 文件传输\sendfile\sendfile\Debug\sendfile.exe.em
文件 621 2010-07-15 16:05 文件传输\sendfile\sendfile\Debug\sendfile.exe.intermediate.manifest
文件 48334 2010-07-15 16:05 文件传输\sendfile\sendfile\Debug\sendfile.obj
文件 445440 2010-07-15 16:05 文件传输\sendfile\sendfile\Debug\vc90.idb
文件 151552 2010-07-15 16:05 文件传输\sendfile\sendfile\Debug\vc90.pdb
............此处省略20个文件信息
相关资源
- Openssl给文件传输加密
- tftp文件传输工具
- socket文件传输源码
- WinPcap+中文技术文档
- WinPcap4.1.1官网正式版
- 解析抓包软件中tcp包装的数据并转换
- WinPcap 中文技术文档(开发手册)
- TCP文件传输服务器
- 网络流量统计基于Winpcap接口
- 基于mini2440安全文件传输系统
- WpdPack包
- Windows下基于TCP 的文件传输
- 基于winpcap的网络数据采集器的实现
- Windows与Linux之间使用socket进行文件传
- QT文件传输266846
- indy10大文件传输支持XE5XE6XE7
- opencv网络摄像头功能和文件传输功能
- WinPcap4.01版驱动程序+开发包+帮助文档
- WinPcap3.0版驱动程序+开发包+帮助文档
- IP数据包流量监控(这个程序利用Wi
- 用TCP/socket实现windows与linux通信文件传
- TCP文件传输Demo
- 串口收发程序,可在两台电脑之间进
- 基于WinPcap的ARP欺骗实验
- 基于winpcap的网络协议分析器
- 国嵌 Linux 安全文件传输
- GTalk英文版,可以进行文件传输
- FTP文件传输课程设计
- 计算机网络课程设计 基于TCP协议的文
- delphi_UDP文件传输
评论
共有 条评论