設備信息的查找與修改(2)

linux設備端:

1.  int fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));//

函數原型:int socket(int domain, int type, int protocol);//發送接收以太網數據幀

//sock_raw(注意一定要在root下使用)原始套接字編程可以接收到本機網卡上的數據幀或者數據包,對於監聽網絡的流量和分析是很有作用的.

  • domain:即協議域,又稱爲協議族(family)。常用的協議族有,AF_INET、AF_INET6、AF_LOCAL(或稱AF_UNIX,Unix域socket)、AF_ROUTE等等。協議族決定了socket的地址類型,在通信中必須採用對應的地址,如AF_INET決定了要用ipv4地址(32位的)與端口號(16位的)的組合、AF_UNIX決定了要用一個絕對路徑名作爲地址。
  • type:指定socket類型。常用的socket類型有,SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等等(socket的類型有哪些?)。
  • protocol:故名思意,就是指定協議。常用的協議有,IPPROTO_TCP、IPPTOTO_UDP、IPPROTO_SCTP、IPPROTO_TIPC等,它們分別對應TCP傳輸協議、UDP傳輸協議、STCP傳輸協議、TIPC傳輸協議

2.  recvfrom(fd, recvBuf, MAX_SIZE, 0, NULL, NULL);

 

 

windows 用vs2010  C++

a.設置設備信息

1. pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &allDevs, errBuf)//查找所有網絡設備

原型:int pcap_findalldevs_ex(char* source,  struct pcap_rmtauth *auth,  pcap_if_t** alldevs,   char* errbuf );

          返回值:0表示查找成功。-1表示查找失敗

參數說明:

source:指定是本地適配器或者遠程適配器 本地適配器:'rpcap://'  遠程適配器:'rpcap://host:port'  抓包文件。'file://c:/myfolder/'.

2.pcap_open(itDev->name, 65535, PCAP_OPENFLAG_PROMISCUOUS, // 混雜模式1000, // 讀取超時時間NULL, // 遠程機器驗證 errBuf )) == NULL)//打開一個抓取設備

3.pcap_freealldevs(allDevs);

4.pcap_sendpacket(adhandle, (const u_char *)sendBuf, sizeof(RawPackInfo) + sizeof(BatchDeviceInfo))

b.查詢設備信息

1. pcap_findalldevs_ex//查找設備列表

2.pcap_open//打開設備列表

3.pcap_sendpacket//發送請求包

4.pcap_next_ex// 從interface或離線記錄文件獲取一個報文

5.WaitForSingleObject//等待返回信息

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章