#include"pcap.h"#pragmacomment(lib,"wpcap.lib")#pragmacomment(lib," />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

WinPcap初學(xué)(三)類(lèi)的實(shí)現(xiàn)

系統(tǒng) 1990 0

??? 距離上次發(fā)博文有兩三個(gè)星期的時(shí)候了,期間看了一些書(shū),如《Effective C++》、《Windows核心編程》。感覺(jué)對(duì)計(jì)算機(jī)有了一個(gè)新的認(rèn)識(shí),自己以前對(duì)程序的見(jiàn)解是那么膚淺,完全沒(méi)有操作系統(tǒng)的概念,也沒(méi)有程序各部分與內(nèi)存關(guān)系的認(rèn)識(shí)。下面開(kāi)始介紹這個(gè)類(lèi)。

1. 類(lèi)成員介紹?

Code

??? 這個(gè)類(lèi)包括了用于初始化網(wǎng)絡(luò)的InitPcap,用于返回網(wǎng)絡(luò)設(shè)備信息的DevMsg,用于選擇設(shè)備的SetDev,用于發(fā)送數(shù)據(jù)包的SendPacket和用于接收數(shù)據(jù)包的GetPacket。用戶(hù)必須先調(diào)用InitPcap,再調(diào)用SetDev,然后才能執(zhí)行發(fā)送或接收。由于接收函數(shù)必采用回調(diào)方式才能工作,所以這里typedef了一個(gè)回調(diào)函數(shù)的指針void packet_handler(u_char *, const struct pcap_pkthdr *, const u_char *),它的三個(gè)參數(shù)都是pcap.h里頭的回調(diào)函數(shù)的參數(shù)。實(shí)際上,從WinPcap到用戶(hù)的使用共有兩次回調(diào)的過(guò)程,一是WinPcap提供的回調(diào),另一個(gè)是封裝類(lèi)的時(shí)候提供的回調(diào)。
2. 類(lèi)的實(shí)現(xiàn)

Code

??? SendPacket中使用了關(guān)鍵段保證線(xiàn)程安全,這樣子在使用多線(xiàn)程的時(shí)候就不會(huì)因?yàn)榫W(wǎng)絡(luò)設(shè)備被同時(shí)調(diào)用而出錯(cuò)。SendPacket的參數(shù)包括了一個(gè)UCHAR指針及待發(fā)送數(shù)據(jù)的長(zhǎng)度,用戶(hù)使用時(shí)把待發(fā)送的數(shù)組的地址傳入?yún)?shù)一,把數(shù)組長(zhǎng)度傳入?yún)?shù)二。GetPacket的參數(shù)包括一個(gè)函數(shù)指針及接收數(shù)據(jù)包的數(shù)目,這里的函數(shù)指針就是用戶(hù)需要被回調(diào)的函數(shù)的地址。用戶(hù)使用的時(shí)候把函數(shù)名(即函數(shù)指針)傳入?yún)?shù)一,把接收的數(shù)據(jù)包的個(gè)數(shù)傳入?yún)?shù)二,當(dāng)有數(shù)據(jù)包被檢測(cè)到的時(shí)候回調(diào)函數(shù)就會(huì)被執(zhí)行,當(dāng)接收的數(shù)據(jù)包的數(shù)目超出cnt時(shí),pcap_loop就會(huì)退出(在此之前pcap_loop是沒(méi)有退出的,它是一個(gè)循環(huán)并阻塞等待數(shù)據(jù)包的函數(shù))。
??? 由于本人是從C#轉(zhuǎn)過(guò)來(lái)的(雖然開(kāi)始學(xué)的是C++,后來(lái)由于種種原因開(kāi)始使用起C#),對(duì)于event方式的回調(diào)比較熟悉。開(kāi)始要寫(xiě)C++的回調(diào)一直沒(méi)弄明白,查了一些中文的資料覺(jué)得都看得糊里糊涂的,后來(lái)看到外國(guó)的資料才明白了 http://www.newty.de/fpt/callback.html 。其實(shí)回調(diào)的關(guān)鍵就是把需要被回調(diào)的函數(shù)的地址作為參數(shù)傳入另一個(gè)函數(shù),還有你必須給這個(gè)函數(shù)定義一個(gè)格式,如參數(shù)和返回值,這樣子回調(diào)的時(shí)候程序才能根據(jù)地址及參數(shù)列表從內(nèi)存中調(diào)用被回調(diào)的函數(shù)。當(dāng)然,定義函數(shù)格式的話(huà)可以通過(guò)typedef的形式在頭文件中定義,也可以在參數(shù)列表中直接定義,如void (*p) (...)這樣。
3.寫(xiě)在后面
??? 發(fā)送函數(shù)只調(diào)用了比較簡(jiǎn)單的pcap_sendpacket,而接收也是調(diào)用了pcap_loop??赡苣阋舶l(fā)現(xiàn)了發(fā)送還有pcap_sendqueue_queue,接收還有pcap_next_ex,不過(guò)對(duì)于簡(jiǎn)單的任務(wù)使用前者就足夠了。

WinPcap初學(xué)(三)類(lèi)的實(shí)現(xiàn)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 国产精品日本一区二区在线播放 | 国产在线观看一区二区 | 三及片在线观看 | 蜜桃av人人夜夜澡人人爽 | 色淫湿视频 | 久久久一区二区三区视频 | 看免费一级毛片 | 日本高清在线看片免费视频 | lutube成人福利在线观看污 | h网站国产 | 精品国产三级在线观看 | 欧美一级欧美三级在线观看 | 激情插插插| 久草在线国产 | 日本色网址 | 日韩欧美视频一区二区三区 | 性视频一区二区 | 国产欧美精品一区二区三区 | 国产一级做a爰片在线 | dydog net| 天天影院在线观看 | 第四色播日韩AV第一页 | 国产日韩欧美三级 | 欧美精品综合在线 | 猛草视频 | av中文字幕在线 | 狠狠色噜噜狠狠狠狠97影音先锋 | 国产亚洲久 | 天天操天天舔 | 99riav1国产精品视频 | 欧美日韩在线观看中文字幕 | 福利视频1000 | 国产精品视_精品国产免费 亚洲综合在线另类色区奇米 | 91看片淫黄大片欧美看国产片 | 一二区| 999热在线视频 | 久久香蕉国产精品一区二区三 | 午夜影院免费视频 | 日日碰狠狠添天天爽五月婷 | 国产日产亚洲欧美综合另类 | 一级黄色绿像片 |