版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、蘇 州 市 職 業(yè) 大 學(xué)實習(xí)(實訓(xùn))報告 名稱 實用網(wǎng)絡(luò)程序設(shè)計實訓(xùn) 2013年 6 月28日至 2013年 6 月 29 日共 1 周院(部) 計算機工程學(xué)院 班 級 姓 名 學(xué) 號 院 長 李金祥 系 主 任 劉昭斌 指導(dǎo)教師 關(guān)輝 于復(fù)生1、 實訓(xùn)地點:信2-5062、 實訓(xùn)時間:2013.6.282013.6.293、 小組成員:4、具體內(nèi)容:本地計算機信息的查詢4.1程序設(shè)計分析與原理通過所學(xué)知識開發(fā)一個簡單的查詢工具,查詢本機的基本配置信息以及基本網(wǎng)絡(luò)配置,如計算機名、IP地址、MAC地址、網(wǎng)關(guān)、子網(wǎng)掩碼等信息。利用Visio簡單設(shè)計程序界面,方便用戶查詢操作。根據(jù)計算機相關(guān)信息
2、的特點,如網(wǎng)絡(luò)中IP地址的唯一性,MAC的唯一性等,可以使用相應(yīng)函數(shù)直接獲取信息,而對于子網(wǎng)掩碼以及網(wǎng)關(guān)則需要先獲得本地計算機的網(wǎng)絡(luò)信息后才能獲得子網(wǎng)掩碼和網(wǎng)關(guān)的設(shè)置信息。主要原理功能介紹:A查詢本地計算機名和IP地址:為了在網(wǎng)絡(luò)上區(qū)分不同的計算機,人們給每臺計算機分配了一組用于標識該計算機的數(shù)字,稱為IP地址。為了便于記憶,人們都希望使用主機名。可使用WinSock庫提供的函數(shù)直接獲得。流程圖:開始初始化WinSock使用gethostname、gethostbyname函數(shù)獲得本機主機名,以及IP地址信息顯示主機名與IP地址信息關(guān)閉WinSock結(jié)束B查詢本機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命令進行初始化取一個網(wǎng)卡獲取網(wǎng)卡的數(shù)目、編號等信息列表調(diào)用Netbios,向網(wǎng)卡發(fā)送NCBENUM定義NCB結(jié)構(gòu)在NCB結(jié)構(gòu)中設(shè)置NCBENUM命令YesNoC查詢本機子網(wǎng)掩碼:又稱網(wǎng)絡(luò)掩碼。唯一作用是將某個IP地址劃分成網(wǎng)絡(luò)地址和主機地址。因此通過使用GetAdaptersInfo()獲得本機網(wǎng)絡(luò)信息后可得到子網(wǎng)掩碼。流程圖:獲得子網(wǎng)掩碼關(guān)閉開始引入頭文件Iphlpapi.h,獲得Iphlpapi.lib支持。 使用GetA
4、daptersInfo()函數(shù)獲得本地網(wǎng)絡(luò)信息D查詢本機網(wǎng)關(guān)信息:又稱網(wǎng)間連接器。使用GetAdaptersInfo()獲得本機網(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”庫,默認創(chuàng)建完成。如圖2:圖2創(chuàng)建基本對話框(3)設(shè)計界面如圖3:圖3設(shè)計界面(4)創(chuàng)建如圖1界面,并對列表框填加成員變量,如圖4:圖4添加成員變量
5、4.2程序函數(shù)代碼介紹A“查詢計算機名”按鈕響應(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ù)直接獲取主機名if(bRet!=0)MessageBox("獲取計算機名錯誤!","提示");return;CSt
6、ring strMeg=HostName;strMeg="本機的計算機名是:"+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;ge
7、thostname(HostName,128);pHost=gethostbyname(HostName);int i=0;CString strIP;while(pHost->h_addr_listi!=NULL)/使用WinSock提供的函數(shù)庫直接獲得本機IP地址strIP=inet_ntoa(*(struct in_addr *)pHost->h_addr_listi);CString str="本機的IP地址:"+strIP;m_show.InsertString(-1,str);i+;WSACleanup();C“查詢MAC地址”按鈕響應(yīng)的函數(shù)源代碼v
8、oid CGetLocalDlg:OnBnClickedGetmac()/ TODO: 在此添加控件通知處理程序代碼NCB ncb; /網(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 命令,以獲取當前計算機的網(wǎng)卡信息, /如有多少個網(wǎng)卡,每張網(wǎng)卡的編號等 ncb.ncb_buffer = (unsigned char *)&lana_enum; ncb.ncb_length = s
9、izeof(lana_enum); UCHAR uRetCode = Netbios(&ncb);int num; /標識網(wǎng)卡個數(shù) MAC_ADDRESS mac_addr5;/假設(shè)最多有5個網(wǎng)卡if (uRetCode != 0) return;num = lana_enum.length; /對每一張網(wǎng)卡,以其網(wǎng)卡編號為輸入編號,獲取其 MAC 地址 for (int i = 0; i < num; i+) memset(&ncb, 0, sizeof(ncb) ); /NCB結(jié)構(gòu)重新清零ASTAT Adapter;/對選定的網(wǎng)卡發(fā)送一個 NCBRESET 命令,以便
10、進行初始化 ncb.ncb_command = NCBRESET; ncb.ncb_lana_num = lana_enum.lanai; uRetCode = Netbios(&ncb ); /指定返回的信息存放的變量 memset(&ncb, 0, sizeof(ncb) ); ncb.ncb_command = NCBASTAT; ncb.ncb_lana_num = lana_enum.lanai; /指定網(wǎng)卡號strcpy(char *)ncb.ncb_callname, "*" ); ncb.ncb_buffer = (unsigned char
11、 *)&Adapter; /指定返回的信息存放的變量 Adapter ncb.ncb_length = sizeof(Adapter); /接著,發(fā)送 NCBASTAT 命令以獲取網(wǎng)卡的信息 uRetCode = Netbios(&ncb ); mac_addri.b1 = Adapter.adapt.adapter_address0;mac_addri.b2 = Adapter.adapt.adapter_address1;mac_addri.b3 = Adapter.adapt.adapter_address2;mac_addri.b4 = Adapter.adapt.ad
12、apter_address3;mac_addri.b5 = Adapter.adapt.adapter_address4;mac_addri.b6 = Adapter.adapt.adapter_address5;CString strMac;strMac.Format("第%d個MAC: %02X-%02X-%02X-%02X-%02X-%02X",i+1, mac_addri.b1, mac_addri.b2, mac_addri.b3, mac_addri.b4, mac_addri.b5, mac_addri.b6);m_show.InsertString(-1,s
13、trMac);D“查詢子網(wǎng)掩碼”按鈕響應(yīng)的函數(shù)源代碼void CGetLocalDlg:OnBnClickedGetsubnet()/ 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);/GetAdapt
14、ersInfo 可以獲得本地計算機的網(wǎng)絡(luò)信息,從而獲得該計算機的子網(wǎng)掩碼。/該函數(shù)在頭文件 Iphlpapi.h.(需安裝 Platform SDK)中聲明,庫文件 Iphlpapi.lib。GetAdaptersInfo( pAdapterInfo, &ulOutBufLen) ; /獲得本地計算機的網(wǎng)絡(luò)信息函數(shù) dwRetVal = GetAdaptersInfo( pAdapterInfo, &ulOutBufLen);pAdapter = pAdapterInfo;while (pAdapter) CString strSubNetMask;strSubNetMask.
15、Format("子網(wǎng)掩碼:%sn", pAdapter->IpAddressList.IpMask.String);/MessageBox(strSubNetMask);m_show.InsertString(-1,strSubNetMask);pAdapter = pAdapter->Next;return;E“查詢網(wǎng)關(guān)”按鈕響應(yīng)的函數(shù)源代碼void CGetLocalDlg:OnBnClickedGetgetway()/ TODO: 在此添加控件通知處理程序代碼PIP_ADAPTER_INFO pAdapterInfo;PIP_ADAPTER_INFO pA
16、dapter = 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) GlobalFree (pAdapterInfo);pAdapterInfo = (IP_ADAPTER_INFO *) malloc (ulOutB
17、ufLen); /獲得本地計算機的網(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)程序測試本機相關(guān)信息獲取程序如圖5:圖5獲取
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 描寫秋景的初一作文600字5篇
- 初中物理教學(xué)心得體會
- 大學(xué)畢業(yè)求職信合集五篇
- 對創(chuàng)業(yè)的認識和理解范文五篇
- 七年級下冊歷史知識要點歸納總結(jié)
- 光電技術(shù)轉(zhuǎn)讓協(xié)議書(2篇)
- 租賃經(jīng)營合同范本
- 旅游汽車租賃合同樣書
- 2025電腦購銷合同合同范本
- 2025煤炭買賣合同
- 魯教版初三物理-質(zhì)量和密度復(fù)習(xí)題及答案
- 阿托品化課件
- 《落花生》-完整版課件
- 2021年貴安新區(qū)產(chǎn)業(yè)發(fā)展控股集團有限公司招聘筆試試題及答案解析
- 《休閑學(xué)概論》課后習(xí)題參考答案
- 安全文化培訓(xùn) (注冊安工再培訓(xùn))課件
- 色粉-MSDS物質(zhì)安全技術(shù)資料
- 骨科學(xué)研究生復(fù)試真題匯總版
- 石油化工鋼結(jié)構(gòu)工程施工及驗收規(guī)范
- 遼海版六年級音樂上冊第8單元《3. 演唱 姐妹們上場院》教學(xué)設(shè)計
- (新版教材)蘇教版三年級上冊科學(xué)全冊單元測試卷
評論
0/150
提交評論