文章标题

来源:互联网 发布:邬贺铨 大数据 编辑:程序博客网 时间:2024/06/15 22:11
                        **类快牙APP开发笔记**

我的愿望是有一个PC端以及一个Android端,可以进行PC—PC,PC—Android,Android—PC,Android—Android间相互传送文件

2015.5.4
今天通过SendARP函数来实现搜索局域网所有在线IP的功能,不过速率有点慢,并不符合我的要求。于是我想到了三个方法
1, 多线程 : 因为每次的SendARP函数对于在线IP都能够在极短的时间内获取到数据。所以我们对每次的循环进行时间限制,将其限制在0.1s中 我们就能够极大提高我们的速率。(有待研究多线程,毕竟我android比较好点);
2,WNetOpenEnum: 不过貌似我被误导了,这个并不能获取到。 - -
3, 通过shell指令的配合C 语言来实现快速获取本机的ARP表;
下面是SendARP的代码

#ifndef WIN32_LEAN_AND_MEAN#define WIN32_LEAN_AND_MEAN#endif#include <winsock2.h>#include <iphlpapi.h>#include <stdio.h>#include <stdlib.h>#pragma comment(lib, "iphlpapi.lib")#pragma comment(lib, "ws2_32.lib")int main(){    IPAddr DestIP, SrcIP = 0;       // DestIP 目标IP  SrcIP 发送端IP  可以不填    ULONG MacAddr[2];    ULONG PhyAddrLen = 100;    BYTE *szByteBuf;    BYTE *szIPByte;    int i , flag;    DestIP = inet_addr("172.26.130.3");    printf("当前局域网在线IP\n");    szByteBuf = (BYTE *)MacAddr;    szIPByte = &DestIP;    for (szIPByte[3]; szIPByte[3] < 0xFF; szIPByte[3]++)    {           flag = SendARP(DestIP, SrcIP, &MacAddr, &PhyAddrLen);        if (flag == NO_ERROR){            printf("%d.%d.%d.%d\n", szIPByte[0], szIPByte[1], szIPByte[2], szIPByte[3]);        }            PhyAddrLen = 6;//这里非常有必要说明一下, 因为每次函数执行成功后,该数值都会被改变,所以我们必须没次循环都进行一次初始化    }    return 0;}

今天就先研究到这里 晚点将WNetOpenEnum的MSDN翻译加上百度的资料上传上来。 百度上的有一些错误

0 0