C++實訓(xùn)文檔(網(wǎng)絡(luò)應(yīng)用編程)_第1頁
C++實訓(xùn)文檔(網(wǎng)絡(luò)應(yīng)用編程)_第2頁
C++實訓(xùn)文檔(網(wǎng)絡(luò)應(yīng)用編程)_第3頁
C++實訓(xùn)文檔(網(wǎng)絡(luò)應(yīng)用編程)_第4頁
C++實訓(xùn)文檔(網(wǎng)絡(luò)應(yīng)用編程)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、.蘇 州 市 職 業(yè) 大 學(xué)實習(xí)(實訓(xùn))報告 名稱 實用網(wǎng)絡(luò)程序設(shè)計實訓(xùn) 2013年 6 月28日至 2013年 6 月 29 日共 1 周院(部) 計算機(jī)工程學(xué)院 班 級 姓 名 學(xué) 號 院 長 李金祥 系 主 任 劉昭斌 指導(dǎo)教師 關(guān)輝 于復(fù)生1、 實訓(xùn)地點:信2-5062、 實訓(xùn)時間:2013.6.282013.6.293、 小組成員:4、具體內(nèi)容:本地計算機(jī)信息的查詢4.1程序設(shè)計分析與原理通過所學(xué)知識開發(fā)一個簡單的查詢工具,查詢本機(jī)的基本配置信息以及基本網(wǎng)絡(luò)配置,如計算機(jī)名、IP地址、MAC地址、網(wǎng)關(guān)、子網(wǎng)掩碼等信息。利用Visio簡單設(shè)計程序界面,方便用戶查詢操作。根據(jù)計算機(jī)相關(guān)信

2、息的特點,如網(wǎng)絡(luò)中IP地址的唯一性,MAC的唯一性等,可以使用相應(yīng)函數(shù)直接獲取信息,而對于子網(wǎng)掩碼以及網(wǎng)關(guān)則需要先獲得本地計算機(jī)的網(wǎng)絡(luò)信息后才能獲得子網(wǎng)掩碼和網(wǎng)關(guān)的設(shè)置信息。主要原理功能介紹:A查詢本地計算機(jī)名和IP地址:為了在網(wǎng)絡(luò)上區(qū)分不同的計算機(jī),人們給每臺計算機(jī)分配了一組用于標(biāo)識該計算機(jī)的數(shù)字,稱為IP地址。為了便于記憶,人們都希望使用主機(jī)名??墒褂肳inSock庫提供的函數(shù)直接獲得。流程圖:開始初始化WinSock使用gethostname、gethostbyname函數(shù)獲得本機(jī)主機(jī)名,以及IP地址信息顯示主機(jī)名與IP地址信息關(guān)閉WinSock結(jié)束B查詢本機(jī)MAC地址:一個網(wǎng)卡對應(yīng)唯一

3、一個MAC地址,采用VC提供的NetBIOS網(wǎng)絡(luò)編程接口可輕松獲得。流程圖:結(jié) 束向網(wǎng)卡發(fā)送NCBASTAT命令獲取網(wǎng)卡地址還有下一塊網(wǎng)卡嗎?嗎?向網(wǎng)卡發(fā)送NCBRESET命令進(jìn)行初始化取一個網(wǎng)卡獲取網(wǎng)卡的數(shù)目、編號等信息列表調(diào)用Netbios,向網(wǎng)卡發(fā)送NCBENUM定義NCB結(jié)構(gòu)在NCB結(jié)構(gòu)中設(shè)置NCBENUM命令YesNoC查詢本機(jī)子網(wǎng)掩碼:又稱網(wǎng)絡(luò)掩碼。唯一作用是將某個IP地址劃分成網(wǎng)絡(luò)地址和主機(jī)地址。因此通過使用GetAdaptersInfo()獲得本機(jī)網(wǎng)絡(luò)信息后可得到子網(wǎng)掩碼。流程圖:獲得子網(wǎng)掩碼關(guān)閉開始引入頭文件Iphlpapi.h,獲得Iphlpapi.lib支持。 使用Get

4、AdaptersInfo()函數(shù)獲得本地網(wǎng)絡(luò)信息D查詢本機(jī)網(wǎng)關(guān)信息:又稱網(wǎng)間連接器。使用GetAdaptersInfo()獲得本機(jī)網(wǎng)絡(luò)信息后可得到網(wǎng)關(guān)信息。流程圖:獲得子網(wǎng)掩碼關(guān)閉開始引入頭文件Iphlpapi.h,獲得Iphlpapi.lib支持。 使用GetAdaptersInfo()函數(shù)獲得本地網(wǎng)絡(luò)信息程序工程創(chuàng)建:(1)打開VS2005,創(chuàng)建工程選擇MFC應(yīng)用程序,如圖1:圖1選擇MFC應(yīng)用程序(2)選擇“基本對話框”并取消“Unicode”庫,默認(rèn)創(chuàng)建完成。如圖2:圖2創(chuàng)建基本對話框(3)設(shè)計界面如圖3:圖3設(shè)計界面(4)創(chuàng)建如圖1界面,并對列表框填加成員變量,如圖4:圖4添加成員變

5、量4.2程序函數(shù)代碼介紹A“查詢計算機(jī)名”按鈕響應(yīng)的函數(shù)源代碼:void CGetLocalDlg:OnBnClickedGetname()WSADATA wsaData;int ret;if(ret=WSAStartup(MAKEWORD(2,2),&wsaData)!=0)return;char HostName128;BOOL bRet;bRet=gethostname(HostName,128);/使用gethostname函數(shù)直接獲取主機(jī)名if(bRet!=0)MessageBox(獲取計算機(jī)名錯誤!,提示);return;CString strMeg=HostName;strMeg

6、=本機(jī)的計算機(jī)名是:+strMeg;m_show.InsertString(-1,strMeg);WSACleanup();B“查詢IP地址”按鈕響應(yīng)的函數(shù)源代碼:void CGetLocalDlg:OnBnClickedGetip()/ TODO: 在此添加控件通知處理程序代碼WSADATA wsaData;int ret;if(ret=WSAStartup(MAKEWORD(2,2),&wsaData)!=0)return;char HostName128;struct hostent* pHost;gethostname(HostName,128);pHost=gethostbyname

7、(HostName);int i=0;CString strIP;while(pHost-h_addr_listi!=NULL)/使用WinSock提供的函數(shù)庫直接獲得本機(jī)IP地址strIP=inet_ntoa(*(struct in_addr *)pHost-h_addr_listi);CString str=本機(jī)的IP地址:+strIP;m_show.InsertString(-1,str);i+;WSACleanup();C“查詢MAC地址”按鈕響應(yīng)的函數(shù)源代碼void CGetLocalDlg:OnBnClickedGetmac()/ TODO: 在此添加控件通知處理程序代碼NCB n

8、cb; /網(wǎng)絡(luò)控制塊 LANA_ENUM lana_enum; /該結(jié)構(gòu)包含網(wǎng)卡數(shù)目及其索引 memset(&ncb, 0, sizeof(ncb) ); /NCB結(jié)構(gòu)清零 ncb.ncb_command = NCBENUM; /向網(wǎng)卡發(fā)送 NCBENUM 命令,以獲取當(dāng)前計算機(jī)的網(wǎng)卡信息, /如有多少個網(wǎng)卡,每張網(wǎng)卡的編號等 ncb.ncb_buffer = (unsigned char *)&lana_enum; ncb.ncb_length = sizeof(lana_enum); UCHAR uRetCode = Netbios(&ncb);int num; /標(biāo)識網(wǎng)卡個數(shù) MAC_A

9、DDRESS mac_addr5;/假設(shè)最多有5個網(wǎng)卡if (uRetCode != 0) return;num = lana_enum.length; /對每一張網(wǎng)卡,以其網(wǎng)卡編號為輸入編號,獲取其 MAC 地址 for (int i = 0; i IpAddressList.IpMask.String);/MessageBox(strSubNetMask);m_show.InsertString(-1,strSubNetMask);pAdapter = pAdapter-Next;return;E“查詢網(wǎng)關(guān)”按鈕響應(yīng)的函數(shù)源代碼void CGetLocalDlg:OnBnClickedGe

10、tgetway()/ TODO: 在此添加控件通知處理程序代碼PIP_ADAPTER_INFO pAdapterInfo;PIP_ADAPTER_INFO pAdapter = NULL;DWORD dwRetVal = 0;pAdapterInfo = (IP_ADAPTER_INFO *) malloc( sizeof(IP_ADAPTER_INFO) );unsigned long ulOutBufLen = sizeof(IP_ADAPTER_INFO);if (GetAdaptersInfo( pAdapterInfo, &ulOutBufLen) != ERROR_SUCCESS)

11、 GlobalFree (pAdapterInfo);pAdapterInfo = (IP_ADAPTER_INFO *) malloc (ulOutBufLen); /獲得本地計算機(jī)的網(wǎng)絡(luò)信息函數(shù) if (dwRetVal = GetAdaptersInfo( pAdapterInfo, &ulOutBufLen) = NO_ERROR)pAdapter = pAdapterInfo;while (pAdapter) CString strGateway;strGateway.Format(網(wǎng)關(guān): %sn, pAdapter-GatewayList.IpAddress.String);m_show.InsertString(-1,strGateway);pAdapter = pAdapter-Next;elseMessageBox(Call to GetAdaptersInfo failed!);return;4.3實訓(xùn)程序測試本機(jī)相關(guān)信息獲取程序如圖5:圖5獲取本機(jī)相關(guān)信息5.實訓(xùn)總結(jié)對我來說,本次實訓(xùn)將所學(xué)知識統(tǒng)一結(jié)合運用,是一個不小的挑戰(zhàn)。在查閱書本以及網(wǎng)上資料后,雖然遇到各種問題,但最終將程序成功運行。這次實訓(xùn),也算是一個復(fù)習(xí),使我

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論