第一篇:實驗一簡單的異步串行通信實驗報告
實驗一 簡單的異步串行通信實驗
一、實驗?zāi)康募耙?/p>
1、了解掌握RS-232接口標(biāo)準(zhǔn)以及 DB9的主要引腳功能;
2、了解掌握串口通信的基本原理;
3、學(xué)習(xí)掌握RS-232電纜的制作和測試方法;
4、學(xué)習(xí)掌握使用串口調(diào)試程序進(jìn)行串口之間的通信實驗。
二、實驗原理
1、異步串行通信原理
在計算機(jī)系統(tǒng)中,每個字符一般使用一個 8 位二進(jìn)制代碼表示。在數(shù)據(jù)通信中,通常將 傳送的每個字符的二進(jìn)制代碼按照由低位到高位的順序依次發(fā)送的方式稱為串行通信。圖 2-1 是串行通信的示意圖。由于串行通信只需在發(fā)送方和接收方之間建立一條通信信道,因 此可以減小通信系統(tǒng)的造價。在遠(yuǎn)程通信中,一般采用串行通信方式。
圖 1-1 串行通信示意圖
同步是數(shù)據(jù)通信中必須解決的一個重要問題。所謂同步就是要求通信的收發(fā)雙方在時間基準(zhǔn)上保持一致。在串行通信中,“異步”是同步收發(fā)雙方通信的重要方式。在異步串行通信中,每個字符作為一個獨(dú)立的整體進(jìn)行發(fā)送,字符之間的時間間隔可以是任意的。為了實現(xiàn)同步,需要在每個字符的第一位前加 1 位起始符(邏輯 1),并在字符的最后一位后加 1位、1.5 位或 2 位停止位(邏輯 0)。異步串行傳輸?shù)谋忍亓鹘Y(jié)構(gòu)如圖 2-2所示。
圖 1-2 異步串行傳輸?shù)谋忍亓鹘Y(jié)構(gòu)
常用的串行通信接口標(biāo)準(zhǔn)包括RS-232、RS-449、V.24、V.35等。其中,RS-232是最常 用的串行通信標(biāo)準(zhǔn)之一。個人計算機(jī)及終端系統(tǒng)中配備的串行接口幾乎都符合 RS-232 標(biāo)準(zhǔn)。
2、RS-232 接口標(biāo)準(zhǔn)
串行口是一種最基本的通信接口,基本上所有的個人計算機(jī)及通信終端設(shè)備都配有這種接口。RS-232 的主要內(nèi)容就 是定義數(shù)據(jù)終端設(shè)備DTE(data terminal equipment)和數(shù)據(jù)通信設(shè)備DCE(data circuit equipment)之間的接口標(biāo)準(zhǔn)。RS-232 是美國電子工業(yè)協(xié)會 EIA 推薦使用的串行通信標(biāo)準(zhǔn)。其初衷是為了促進(jìn)利用電話網(wǎng)進(jìn)行數(shù)據(jù)通信應(yīng)用的發(fā)展,現(xiàn)在也普遍應(yīng)用于各類計算機(jī)或終端設(shè)備之間的短距離連接。
RS-232 使用的連接器包括 DB-
25、DB-15 和 DB-9 等幾種類型,不同類型連接器使用的引腳定義也各不相同。
計算機(jī) RS-232 串行通信的基本過程。圖 1-4 異步串行通信實驗總體結(jié)構(gòu)示意圖
三、實驗過程與實驗步驟
1、使用制作的 RS-232電纜將 2臺計算機(jī)的可用 COM 口連接起來。
2、復(fù)制串口調(diào)試助手到硬盤上。
3、直接雙擊 “串口調(diào)試助手 3.0”運(yùn)行軟件。檢查串口線是否連接到計算機(jī)和設(shè)備上。確定串口(本機(jī)為com1)。在串口調(diào)試助手中打開串口:com1。
4、使用字符串收發(fā)
5、使用文件傳輸功能
使用文件傳輸功能,在 2 臺電腦上傳輸文件,這對于某些特定場合可以用到該功能。首先由接收一端在打開串口后,按下接收文件按鈕。
之后會彈出一個對話框,等待對方發(fā)送文件。
發(fā)送一端在打開串口后,先選擇發(fā)送文件(如下圖)
選擇文件后,按下發(fā)送按鈕,文件開始傳輸中,這時 2 端都可以看到發(fā)送的進(jìn)度條。發(fā)送完畢后,軟件會提示!
四、實驗結(jié)果與分析:串口(com1)
1、正常發(fā)送:
(1)A機(jī):波特率相同(9600)、校驗位相同(none)、數(shù)據(jù)位相同(8)、停止位相同(1)
B機(jī):波特率相同(9600)、校驗位相同(none)、數(shù)據(jù)位相同(8)、停止位相同(1)結(jié)果:A機(jī)發(fā)“你好”,B機(jī)收“你好”,(圖1); B機(jī)發(fā)“哈哈”,A機(jī)收“哈哈”,(圖2);
圖1
圖2(2)、A機(jī):波特率相同(19200)、校驗位相同(ODD)、數(shù)據(jù)位相同(8)、停止位相同(2)
B機(jī):波特率相同(19200)、校驗位相同(ODD)、數(shù)據(jù)位相同(8)、停止位相同(2)結(jié)果:A機(jī)發(fā)“我很好”,B機(jī)收“我很好”;圖3); B機(jī)發(fā)“你呢”,A機(jī)收“你呢”;圖4);
圖3
圖4
2、波特率不同
A機(jī):波特率相同(4800)、校驗位相同(ODD)、數(shù)據(jù)位相同(8)、停止位相同(1)B機(jī):波特率相同(9600)、校驗位相同(ODD)、數(shù)據(jù)位相同(8)、停止位相同(1)結(jié)果:A機(jī)發(fā)“01 02 03”,B機(jī)收“胉”;(圖5); B機(jī)發(fā)“yjw”,A機(jī)收“?”;(圖6); 分析: 圖6
圖5 波特率控制采樣時間間隔,波特率不相同,收發(fā)雙方在 相等時間內(nèi)接收和發(fā)送數(shù)據(jù) 不一致。
3、數(shù)據(jù)位不同
A機(jī):波特率相同(9600)、校驗位相同(ODD)、數(shù)據(jù)位相同(6)、停止位相同(1)B機(jī):波特率相同(9600)、校驗位相同(ODD)、數(shù)據(jù)位相同(8)、停止位相同(1)結(jié)果:A機(jī)發(fā)“040506”,B機(jī)收“?”,(圖7); B機(jī)發(fā)“l(fā)ys”,A機(jī)收“,9>”,(圖8); 分析:數(shù)據(jù)位不相同,收發(fā)雙方在相等時間內(nèi)接收和發(fā)送數(shù)據(jù)不一致,所以結(jié)果不相同
圖7
圖8
4、奇偶校檢不同
(1)A機(jī):波特率相同(9600)、校驗位相同(EVE)、數(shù)據(jù)位相同(8)、停止位相同(1)
B機(jī):波特率相同(9600)、校驗位相同(ODD)、數(shù)據(jù)位相同(8)、停止位相同(1)結(jié)果:A機(jī)發(fā)“54 85 96 75”,B機(jī)收“54 85 96 75”;(圖9)B機(jī)發(fā)“第五種”,A機(jī)收“第五種”;(圖10)分析:因為校驗位用于檢驗 接收和發(fā)送的數(shù)據(jù)的正確性的,在最終轉(zhuǎn)換時會去除校驗位,所以接收到的有效數(shù)據(jù)和發(fā)送的有效數(shù)據(jù)相同,發(fā)送與接收結(jié)果一樣。
圖9
圖10(2)A機(jī):波特率相同(9600)、校驗位相同(NONE)、數(shù)據(jù)位相同(8)、停止位相同(1)
B機(jī):波特率相同(9600)、校驗位相同(ODD)、數(shù)據(jù)位相同(8)、停止位相同(1)結(jié)果:A機(jī)發(fā)“54 85 96 75”,B機(jī)收“
”;(圖11)
B機(jī)發(fā)“第六種”,A機(jī)收“第六種”;(圖12)
分析:由于A機(jī)無校驗位,B機(jī)有校驗位,所以B機(jī)在收到數(shù)據(jù)并校檢,后會自動去除校檢位以致發(fā)雙方的有校數(shù)據(jù)不一致,結(jié)果不一樣。
相反的。當(dāng)A機(jī)為接收方時,雖然A機(jī)無檢驗位,但是因為A機(jī)已接收到8位數(shù)據(jù)故不接收B機(jī)發(fā)送的校檢位。結(jié)果一樣。
圖11
圖12
5、停止位不同
A機(jī):波特率相同(9600)、校驗位相同(ODD)、數(shù)據(jù)位相同(8)、停止位不同(1)B機(jī):波特率相同(9600)、校驗位相同(ODD)、數(shù)據(jù)位相同(8)、停止位不同(2)
圖13
結(jié)果:A機(jī)發(fā)“B機(jī)收“B機(jī)發(fā)“
”,A機(jī)收“
”,”;(圖13)”;(圖14)
圖14 分析:
5、發(fā)送文件
A機(jī):波特率相同(9600)、校驗位相同(NONE)、數(shù)據(jù)位相同(8)、停止位相同(2)B機(jī):波特率相同(9600)、校驗位相同(NONE)、數(shù)據(jù)位相同(8)、停止位相同(2)結(jié)果分析:
當(dāng)有校檢位時,不可以接收文件;波特率不同、校驗位不同、數(shù)據(jù)位同或停止位不同時,文件無法接收;即唯有當(dāng)波特率相同、數(shù)據(jù)位相同、停止位相同且無校檢位時,方可以正確接收文件。
五、思考并回答以下問題:
(1)在本實驗中,RS—232 串口電纜處于 OSI 參考模型的什么位置?它的作用是什么?
答:處于OSI 參考模型的物理層,其作用是作為傳輸介質(zhì),連接通信的網(wǎng)絡(luò)節(jié)點(diǎn),實現(xiàn)比特流的透明傳輸,為數(shù)據(jù)鏈路層提供數(shù)據(jù)傳輸服務(wù)。
(2)在本實驗中,數(shù)據(jù)和信號分別體現(xiàn)在 OSI參考模型的什么位置?兩者之間有何區(qū)別?
答:數(shù)據(jù)體現(xiàn)在數(shù)據(jù)鏈路層,信號體現(xiàn)在物理層。兩者區(qū)別在:數(shù)據(jù)鏈路層:為網(wǎng)絡(luò)層提供服務(wù)的,解決兩個相鄰結(jié)點(diǎn)之間的通信問題,傳送的協(xié)議數(shù)據(jù)單元稱為數(shù)據(jù)幀。物理層:OSI模型的最底層。它提出了網(wǎng)絡(luò)的物理特性,比如連接的電纜類型。這里是二進(jìn)制值0和1的世界,也就是數(shù)據(jù)以信號的電特性(高低電平)來表示。
(3)什么是波特率?為何兩臺 PC 的波特率不同就不能正常通信?
答:波特率又稱調(diào)制速率、傳碼速率,記為Nbd,是指在數(shù)據(jù)通信系統(tǒng)中,每秒鐘傳輸信號碼元個數(shù),單位是波特。
在串口通信,一般包括起始位,數(shù)據(jù)位,校驗位(可無)和停止位。以起始位為標(biāo)志,通信雙方進(jìn)行同步,然后發(fā)送方以一個固定的時間間隔進(jìn)行比特位的傳輸,接收方以一個固定的時間間隔進(jìn)行比特位的接收,如果雙方的波特率不同,就意味著發(fā)送方和接收方所采用的時間間隔不相等,就可能導(dǎo)致接收數(shù)據(jù)的錯位。一般認(rèn)為通信雙方的波特率相差2.5%以內(nèi)可保證正常通信。
第二篇:單片機(jī)串行通信實驗
實驗四 單片機(jī)串行通信實驗
一、實驗?zāi)康?/p>
1、掌握單片機(jī)串行口工作方式的程序設(shè)計,及簡易三線式通訊的方法。
2、了解實現(xiàn)串行通訊的硬環(huán)境、數(shù)據(jù)格式的協(xié)議、數(shù)據(jù)交換的協(xié)議。
3、學(xué)習(xí)串口通訊的中斷方式的程序編寫方法
二、實驗說明
利用單片機(jī)串行口,實現(xiàn)兩個實驗臺之間的串行通訊。其中一個實驗臺作為發(fā)送方,另一側(cè)為接收方。發(fā)送方讀入按鍵值,并發(fā)送給接收方,接收方收到數(shù)據(jù)后在LED上顯示。
三、實驗儀器
計算機(jī)
偉福實驗箱(lab2000P)
四、實驗內(nèi)容與軟件流程圖 1、8051的RXD、TXD接線柱在POD51/96仿真板上。
2、通訊雙方的RXD、TXD信號本應(yīng)經(jīng)過電平轉(zhuǎn)換后再行交叉連接,本實驗中為減少連線可將電平轉(zhuǎn)換電路略去,而將雙方的RXD、TXD直接交叉連接。也可以將本機(jī)的TXD接到RXD上,這樣按下的鍵,就會在本機(jī)LED上顯示出來。
3、若想與標(biāo)準(zhǔn)的RS232設(shè)備通信,就要做電平轉(zhuǎn)換,輸出時要將TTL電平換成RS232電平,輸入時要將RS232電平換成TTL電平??梢詫⒎抡姘迳系腞XD、TXD信號接到實驗板上的“用戶串口接線”的相應(yīng)RXD和TXD端,經(jīng)過電平轉(zhuǎn)換,通過“用戶串口”接到外部的RS232設(shè)備??梢杂脤嶒瀮x上的邏輯分析儀采樣串口通信的波形
4、軟件流程圖
5、實驗電路連接方式
①雙機(jī)串行通信方式。TXD腳和RXD腳分別用于發(fā)送和接收數(shù)據(jù)。
②單機(jī)通信的情況下,只需將自己的TXD腳與RXD腳連接就可以,不用公地操作。
五、思考題
1、接收到的數(shù)據(jù)加1顯示出來;
2、保存前一個接收到的數(shù)據(jù),數(shù)據(jù)向前推動顯示。
六、源程序修改原理及其仿真結(jié)果 實驗結(jié)果圖 源程序:
加1顯示:
接收到的數(shù)據(jù)先前推送:
七、心得體會
通過這次實驗,我掌握了單片機(jī)串行口工作方式的程序設(shè)計,及簡易三線式通訊的方法。了解了實現(xiàn)串行通訊的硬環(huán)境、數(shù)據(jù)格式的協(xié)議、數(shù)據(jù)交換的協(xié)議。學(xué)習(xí)了串口通訊的中斷方式的程序編寫方法。
第三篇:南郵通信技術(shù)實驗報告實驗一
南京郵電大學(xué)通達(dá)學(xué)院
課程實驗報告
題 目: IP網(wǎng)絡(luò)中的TCP-UDP通信實驗
學(xué) 院 通達(dá)學(xué)院 學(xué) 生 姓 名 王偉慧 班 級 學(xué) 號 10005002 指 導(dǎo) 教 師 王珺 開 課 學(xué) 院 通信與信息工程學(xué)院 日 期 2013.5
一,實驗?zāi)康?/p>
了解局域網(wǎng)TCP消息通信過程的機(jī)制;
1,了解局域網(wǎng)UDP消息通信過程的特點(diǎn); 2,熟悉最簡單的Socket類的操作和使用;
3,實現(xiàn)字符串通信、文件(ASCII文件)傳輸、Socket局域網(wǎng)電話的實現(xiàn);
二 實驗設(shè)備及軟件環(huán)境
答:一臺或兩臺裝有VC++的帶有網(wǎng)卡的PC機(jī)(或工控機(jī))。
以太網(wǎng)TCP通信UDP通信服務(wù)器端10.10.9.1客戶端10.10.9.210.10.9.3710.10.9.15
三 實驗步驟
內(nèi)容一:基于TCP協(xié)議的Socket消息發(fā)送和接收
說明:事例程序包括“TCP聊天服務(wù)器” 與“TCP聊天客戶端”。1,運(yùn)行示例程序“TCP聊天服務(wù)器”設(shè)置端口號:1001,2,點(diǎn)擊“服務(wù)器開啟服務(wù)”
3,運(yùn)行示例程序“TCP聊天客戶端”,設(shè)置端口號一定要與“TCP聊天服務(wù)器”設(shè)置的一致。如果在同一臺機(jī)器上運(yùn)行,輸入服務(wù)器IP地址:127.0.0.1,如果不在同一臺機(jī)器上,輸入局域網(wǎng)上服務(wù)器所在機(jī)器的IP地址(當(dāng)然首先確保局域網(wǎng)通暢)4,點(diǎn)擊“連接”
在客戶端輸入文字消息,可以看到服務(wù)器端能顯示出客戶機(jī)的名稱、IP地址、以及通過Socket消息發(fā)送過來的文字內(nèi)容。內(nèi)容二,基于UDP的SOCKET消息 1,(必須是在兩臺機(jī)器上,說明書上示意為10.10.9.37和10.10.9.15兩個IP地址)均運(yùn)行程序“UDP客戶端”,運(yùn)行界面如圖1.5,注意此時已經(jīng)沒有明確的“服務(wù)器”“客戶端”之說,“服務(wù)器名”輸入對端IP地址,端口號必須一致。2,分別點(diǎn)擊“打開端口”,連接上服務(wù)器后,可以互發(fā)消息
四.實驗內(nèi)容及實驗結(jié)果
TCP通信
UDP通信
五.實驗體會
實驗過程中,雖然有很多的困難,但經(jīng)過老師和同學(xué)的知道,最終都順利解決了,實驗之后,對TCP、UDP的通信連接有了更加深刻的認(rèn)識,增長了有關(guān)通信技術(shù)方面的知識,對以后的學(xué)習(xí)生活,都會有很大的幫助。
六.思考題
3,如果現(xiàn)在要傳送一個TXT文本,應(yīng)如何實現(xiàn),寫出編程思路?(1)打開文本 將內(nèi)容讀入 緩沖區(qū)(2)與 另一臺機(jī)器建立 socket連接(3)發(fā)送
(4)另一臺機(jī)器 保存接收到的內(nèi)容
5,TCP本機(jī)通信時可以使用哪些IP地址來進(jìn)行訪問? 答:1.本機(jī)設(shè)定的IP 2.環(huán)回地址,以127.開頭的IP地址如127.0.0.1 6.TCP通信時如果服務(wù)器一方改變端口號,客戶端應(yīng)做怎樣的處理?
答:因為客戶端一般情況下不設(shè)置端口號,因此在調(diào)用SOCKET()創(chuàng)建套接口后,直接調(diào)用CONNECT()函數(shù)連接到目標(biāo)主機(jī),這中情況下客戶端的端口是系統(tǒng)分配的,如果你想自己指定客戶端的端口,那么就象服務(wù)端一樣,在SOCKET()創(chuàng)建套接口后,調(diào)用一下BIND()函數(shù)綁定本機(jī)端口,然后再調(diào)用CONNECT()函數(shù)。
第四篇:串行通信的工作方式
串行通信的工作方式?數(shù)據(jù)按時間順序(分時)先后一位一位地通過單通信通路傳送的通信方式。
①從通信距離上看:并行通信適宜于近距離的數(shù)據(jù)傳送,通常小于30米。而串行通信適宜于遠(yuǎn)距離傳送,可以從幾米到數(shù)千公里。
②從通信速率上看:在短距離內(nèi),并行接口的數(shù)據(jù)傳輸速率顯然比串行接口的傳輸速率高得多,但遠(yuǎn)距離串行數(shù)據(jù)傳送速率比并行數(shù)據(jù)傳送速率易于提高。由于串行通信的通信時鐘頻率較并行通信容易提高,因此許多高速外部設(shè)備如數(shù)字?jǐn)z像機(jī)與計算機(jī)之間的通信也往往使用串行通信方式。
③從抗干擾性能上看:串行通信由于只有少數(shù)幾根信號線,信號間的互相干擾比較小。
④從設(shè)備和費(fèi)用上看:隨著大規(guī)模和超大規(guī)模集成電路的發(fā)展,邏輯器件價格趨低,而通信線路費(fèi)用趨高,因此對遠(yuǎn)距離通信而言,串行通信的費(fèi)用顯然會低得多。另一方面串行通信還可利用現(xiàn)有的電話網(wǎng)絡(luò)來實現(xiàn)遠(yuǎn)程通信,降低了通信費(fèi)用。
第五篇:實驗一 實驗報告
網(wǎng) 絡(luò) 程 序 設(shè) 實驗報告
實驗名稱:Winsock編程接口實驗 實驗類型: 驗 證 型
計
一、實驗?zāi)康?/p>
? 掌握Winsock的啟動和初始化;
? 掌握gethostname(),gethostbyname(),GetAdaptersInfo()等信息查詢函數(shù)的使用。
二、實驗設(shè)計
實驗內(nèi)容:
1、編寫程序能同時實現(xiàn)對多個域名的解析。比如在控制臺輸入:getip 004km.cn對應(yīng)的IP地址列表。
2、編寫程序獲取并輸出本地主機(jī)的所有適配器的IP地址,子網(wǎng)掩碼,默認(rèn)網(wǎng)關(guān),MAC地址。
根據(jù)實驗內(nèi)容編寫程序:
1、對相關(guān)域名進(jìn)行解析,利用gethostbyname()完成解析,用到的結(jié)構(gòu)體為:
struct hostent{ char FAR*
h_name;char FAR* FAR* h_aliases;short
h_addrtype;short
h_length;char FAR* FAR* h_addr_list;}
得到的IP地址列表由h_addr_list存儲;
2、利用GetAdaptersInfo()函數(shù)獲得本地主機(jī)的相關(guān)信息,通過IP_ADAPTER_INFO結(jié)構(gòu)體返回所需信息。
IP_ADAPTER_INFO的定義如下: typedef struct _IP_ADAPTER_INFO {
struct _IP_ADAPTER_INFO* Next;
DWORD ComboIndex;
char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
UINT AddressLength;
BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
DWORD Index;
UINT Type;
UINT DhcpEnabled;
PIP_ADDR_STRING CurrentIpAddress;
IP_ADDR_STRING IpAddressList;
IP_ADDR_STRING GatewayList;
IP_ADDR_STRING DhcpServer;
BOOL HaveWins;
IP_ADDR_STRING PrimaryWinsServer;
IP_ADDR_STRING SecondaryWinsServer;
time_t LeaseObtained;
time_t LeaseExpires;
} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
三、實驗過程(包含實驗結(jié)果)
1、分析題目,編寫程序;
2、將編寫的程序進(jìn)行編譯、運(yùn)行,輸入題目給定的內(nèi)容,完成題目要求; 結(jié)果如下:
第1題:
第2題:
四、討論與分析
思考題:
1、Winsock初始化的作用:只有調(diào)用了WSAStartup()進(jìn)行初始化之后,應(yīng)用程 序才能調(diào)用其他Windows Sockets API函數(shù),實現(xiàn)網(wǎng)絡(luò)通信;
2、函數(shù)原型為:
DWORD GetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo,//接受數(shù)據(jù)的緩沖區(qū)
PULONG pOutBufLen
// 數(shù)據(jù)的長度大小);
3、域名解析時出現(xiàn)域名對應(yīng)多個IP,原因:該域名存在于多個服務(wù)器。
五、實驗者自評
通過本次實驗,我掌握了Winsock的啟動和初始化以及gethostname(),gethostbyname(),GetAdaptersInfo()等函數(shù)查詢的使用,加深了以前對課本知識的認(rèn)識程度。
六、附錄:關(guān)鍵代碼(給出適當(dāng)注釋,可讀性高)
第1題代碼:
////////////////////////////////////////////////// // GetAllIps.cpp文件
//#include “../common/InitSock.h” #include
using namespace std;
#pragma comment(lib, “WS2_32”)// 鏈接到WS2_32.lib //CInitSock initSock;// 初始化Winsock庫
void main(){
char szMessage[256];// 取得本地主機(jī)名稱
// 初始化
WSADATA wsaData;if(WSAStartup(MAKEWORD(2,2), &wsaData)!= 0){
exit(0);}
// 通過主機(jī)名得到地址信息
printf(“ Get IP::”);gets(szMessage);
// 獲取主機(jī)信息
hostent *pHost = ::gethostbyname(szMessage);
// 打印出所有IP地址
in_addr addr;for(int i = 0;;i++){
char *p = pHost->h_addr_list[i];
if(p == NULL)
break;
memcpy(&addr.S_un.S_addr, p, pHost->h_length);
char *szIp = ::inet_ntoa(addr);
printf(“ 服務(wù)器 %s IP地址:%s n ”,szMessage, szIp);
printf(“服務(wù)器名字: %s n”,pHost->h_name);}
/////////////////////////// ::WSACleanup();
}
第2題代碼:
// 獲取并輸出本地主機(jī)的所有適配器的IP地址,子網(wǎng)掩碼,默認(rèn)網(wǎng)關(guān),MAC地址
#include
void main(){ // 定義變量
IP_ADAPTER_INFO *pAdapterInfo;ULONG ulOutBufLen;DWORD dwRetVal;PIP_ADAPTER_INFO pAdapter;
pAdapterInfo =(IP_ADAPTER_INFO *)malloc(sizeof(IP_ADAPTER_INFO));ulOutBufLen = sizeof(IP_ADAPTER_INFO);// 第一次獲取適配器信息,得到ulOutBufLen的實際大小
if(GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)!= ERROR_SUCCESS){
free(pAdapterInfo);
pAdapterInfo =(IP_ADAPTER_INFO *)malloc(ulOutBufLen);} // 第二次獲取適配器信息,獲得了pAdapterInfo信息
if(dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)!= ERROR_SUCCESS){
cout<<“GetAdapterInfo Error!”< // 打印MAC地址信息、子網(wǎng)掩碼以及網(wǎng)關(guān) pAdapter = pAdapterInfo;while(pAdapter){ cout<<“MAC Address: ”; for(int i=0;i AddressLength;i++) { if(i ==(pAdapter->AddressLength-1)) { cout< } else { cout< } } cout< cout<<“IP 地址:”< IpAddressList.IpAddress.String< cout<<“子網(wǎng)掩碼 :”< IpAddressList.IpMask.String< cout<<“網(wǎng)關(guān) :”< IpAddressList.IpAddress.String< cout<<“****************************************”< pAdapter = pAdapter->Next;} // 釋放資源 if(pAdapterInfo){ free(pAdapterInfo);} cout< }