资源简介
用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个文件信息
相关资源
- TCP文件传输Demo
- 串口收发程序,可在两台电脑之间进
- 基于WinPcap的ARP欺骗实验
- 基于winpcap的网络协议分析器
- 国嵌 Linux 安全文件传输
- GTalk英文版,可以进行文件传输
- FTP文件传输课程设计
- 计算机网络课程设计 基于TCP协议的文
- delphi_UDP文件传输
- ASIO文件传输DEMO
- 使用winpcap进行ip流量包分析程序
- 校园网计费系统的设计与实现
- 基于UDP的文件传输 TCPIP课程作业 包括
- 基于VS2010的CSocket网络文件传输
- 点对点文件传输课程设计
- iocp_file文件传输
- 串口发送接受文件工具
- 基于CSocket的局域网聊天和文件传输
- 基于winpcap的网络入侵检测系统(源码
- 基于QT的QQ聊天实现文件传输,消息记
- Wifi热点实现文件传输
- 多线程网络文件传输的设计与实现
- 基于Qt实现的多线程客户端与服务器
- 实现蓝牙传输文件源代码
- 基于Winpcap实现抓取数据包
- Xftp6个人免费版
- TCPSocket文件传输.rar
- 基于WinPcap的协议分析器
- Qt实现客户端与服务器消息发送与文件
- 基本web的文件传输系统
评论
共有 条评论