網路程式設計學習日記 1

2021-05-22 09:02:15 字數 2681 閱讀 4075

很多函式都是用的winpcap的,所以我又抓緊時間看winpcap的入門知識。

裡面有開發者包developer』s pack和普通使用的安裝程式,寬頻上網助手就是普通的安裝包,而開發要使用的則是developer』s pack。

下來之後,安裝到某個目錄,然後配置vc,把那個目錄的include和lib兩個目錄放到vc的選項->目錄裡面。

winpcap目錄下有doc文件,裡面的東西相當全面。我執行了兩個,都不能直接執行。

第乙個簡單程式是獲取網絡卡介面卡資訊,裡面乙個函式pcap_findalldevs_ex找不到,網上資料說是因為這個函式屬於遠端網絡卡獲取,它 的宣告在#include "remote-ext.h"裡面,加上去就可以執行了。

第二個程式錯誤更多,

f:/學習/網路/wipcap8_08_20/2/cpp1.cpp(155) : error c2065: 』socklen_t』 : undeclared identifier

f:/學習/網路/wipcap8_08_20/2/cpp1.cpp(155) : error c2146: syntax error : missing 『;』 before identifier 』sockaddrlen』

f:/學習/網路/wipcap8_08_20/2/cpp1.cpp(155) : error c2065: 』sockaddrlen』 : undeclared identifier

f:/學習/網路/wipcap8_08_20/2/cpp1.cpp(164) : error c2065: 『getnameinfo』 : undeclared identifier

f:/學習/網路/wipcap8_08_20/2/cpp1.cpp(170) : error c2065: 『ni_numerichost』 : undeclared identifier

錯誤根由是因為winpcap支援ipv6,而vc的winsock2.h太老了,很多結構都沒有被支援,所以產生錯誤。網上有人說可以用vs新版 本除錯,我電腦裡面是vs2008,但是仍然產生錯誤

_vsnprintf屬性與生命不匹配,網上沒有合適的解決方案,我感覺是winpcap的某個標頭檔案與stdio.h引數不匹配。

既然vs也無法通過,我實在沒能力去修改winpcap的標頭檔案,所以就用最後乙個方案,使用vc6.0的最新的platform sdk開發包,裡面包含了新的標頭檔案,就可以支援winpcap了。

有人說psdk只有windows2003的版本,我在微軟裡面找到了winxpsp2的psdk。

**如下

裡面好幾個cab,網頁裡面有完整的安裝說明。

我正在下,搞好之後如果能用再說。

弄好了,下面是platformsdk安裝步驟

(1)安裝過程:

cmd執行psdk-full.bat,引數為乙個目錄,裡面會被解壓縮安裝包,然後setup,一路next就可以了。

(2)配置過程

開啟visual c++6.0,在選項裡面連線,把psdk安裝後的include和lib加入相應的位置。

特別注意,要把這些目錄的順序調高,我直接放到了最高層去了。

二1.編譯時候會出現函式問題

『pcap_findalldevs_ex』 : undeclared identifier

『pcap_src_if_string』 : undeclared identifier

『pcap_open』 : undeclared identifier

『pcap_openflag_promiscuous』 : undeclared identifier

『=』 : cannot convert from 『int』 to 』struct pcap *』

等一系列函式找不到的問題,導致這些問題的關鍵在於他們的函式宣告並不包含在pcap.h這個

標頭檔案裡面,而是包含在remote-ext.h這個函式裡面,所以只需要在

#include "pcap.h"後面加上

#include "remote-ext.h"

就可以編譯通過了。

網上有網友戲稱說是winpcap

開發小組故意做的惡作劇或者是撰寫doc說明時候忘記加入了

= =#

2.出現連線錯誤

cpp3.obj : error lnk2001: unresolved external symbol __imp__ntohs@4

debug/cpp3.exe : fatal error lnk1120: 1 unresolved externals

一般新增工程只需要新增wpcap.lib這個庫檔案,而在分析資料報這段**裡,光這個標頭檔案

已經不夠了,需要再新增ws2_32.lib這個標頭檔案。其實這個在winpcap的配置vc裡有說明,但

是以前懶,都只用wpcap.lib

3.關於程式執行時候是否需要winpcap的支援,我無法測試出結果,因為學校上網方式的限制

,所有系統都是有winpcap執行庫檔案的,待會兒去網上找找相關資料呢

4.暑假一直看的是英文說明文件,很吃力,最近在搜狗隨便一搜,居然發現了有現成翻譯好的

中文說明文件,翻譯挺不錯的,可以去搜尋下一下。

終於開始開網路程式設計

課,感嘆一下winpcap的強大,還是停留在使用者層的程式設計,完全沒能力看

核心的源**。。。

Unix網路程式設計學習日記

今天開始拜讀 unix網路程式設計 找到的源 在linux下有各種問題,最後決定還是自己從頭寫比較好。從第乙個時間服務程式開始學習。今天先看一下主要的標頭檔案的作用。在common.h中 參照 unp.h 自己寫的,包含常用標頭檔案和一些常量定義,用著方便 有以下的標頭檔案 sys types.h ...

網路流學習日記 1

網路流,作為hn省選必考題型,有著十分大的難度,而從現在開始,我就要學習網路流了,從今天開始,我將寫下網路流日記。day1 網路流有著幾個基本數值 流量,容量,原點,匯點等。我們不難發現,網路上的每乙個邊都得滿足 設f x,y 表示流量,c x,y 表示容量,x,y表示從x到y的邊,s表示總流量,即...

Unix網路程式設計學習日記 2

今天繼續探索 unix網路程式設計 的框架。並改善上次的程式 在第一次接觸中,我將error.h標頭檔案分出,但是發現錯誤檢測和輸出大量的存在,因此歸入到common.h中。加入了一些安全包裝函式,就是對於原函式的呼叫並進行錯誤檢查。用新的函式改善了daytimecpcli,並學習伺服器程式dayt...