


版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、網(wǎng)絡(luò)與通信課程實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)2:Socket通信編程姓名院系計(jì)算機(jī)學(xué)院學(xué)號(hào)任課教師錢權(quán)指導(dǎo)教師錢權(quán)實(shí)驗(yàn)地點(diǎn)計(jì)算機(jī)樓706機(jī)房實(shí)驗(yàn)時(shí)間2016年9月13日實(shí)驗(yàn)課表現(xiàn)出勤、表現(xiàn)得分(10)實(shí)驗(yàn)報(bào)告得分(40)實(shí)驗(yàn)總分操作結(jié)果得分(50)實(shí)驗(yàn)?zāi)康模?. 掌握Socket編程過(guò)程;2. 編寫(xiě)簡(jiǎn)單的網(wǎng)絡(luò)應(yīng)用程序。實(shí)驗(yàn)內(nèi)容:利用您選擇的任何一個(gè)編程語(yǔ)言,分別基于TCP與UDP編寫(xiě)一個(gè)簡(jiǎn)單的 Client/Server網(wǎng)絡(luò)應(yīng)用程序。具體程序要求參見(jiàn)實(shí)驗(yàn)指導(dǎo)書(shū)。要求以附件形式給出:系統(tǒng)概述:運(yùn)行環(huán)境、編譯、使用方法、實(shí)現(xiàn)環(huán)境、程序文件列表等;主要數(shù)據(jù)結(jié)構(gòu);主要算法描述;用戶使用手冊(cè); 程序源代碼;實(shí)驗(yàn)要求:(學(xué)
2、生對(duì)預(yù)習(xí)要求的回答)(10分)得分:Socket編程客戶端的主要步驟1)搜尋就是否有服務(wù)端,無(wú)論就是否收到都返回相關(guān)的一個(gè)消息。2)獲得服務(wù)器端的10流3)用處理流封裝后與客戶端交互,原則4)關(guān)閉 10 流,socket。Socket編程服務(wù)器端的主要步驟1)打開(kāi)服務(wù)器端,等待客戶端的連接2)如果連接成功返回一個(gè)消息,不成功則返回失敗的消息3)獲得服務(wù)器端的IO流4)用處理流封裝后與客戶端交互,5)關(guān)閉客戶端,關(guān)閉服務(wù)器。實(shí)驗(yàn)過(guò)程中遇到的問(wèn)題如何解決的?(10分)得分:?jiǎn)栴}1:怎樣制作界面?因?yàn)槲沂褂玫木褪莏ava語(yǔ)言,所以我采用了 java的GUI程序里面的JFrame來(lái)構(gòu)造窗體 界面 與控
3、件。問(wèn)題2:服務(wù)器端程序如何根據(jù)收到的信息選擇轉(zhuǎn)發(fā)的目的地?答:服務(wù)器在收到信息后,根據(jù)特殊字符的前面加上目的地用戶名用特殊字符將信息實(shí)體分 開(kāi),獲得目的地用戶名。 然后在記錄所有用戶信息的數(shù)組中,匹配該用戶名,找到返回該用戶的套接字指針,服務(wù)器根據(jù)該指針轉(zhuǎn)發(fā)信息,若找不到,出現(xiàn)錯(cuò)誤,返回錯(cuò)誤標(biāo)識(shí)。問(wèn)題3:整個(gè)Socket編程中遇到的許多異常怎么處理?實(shí)驗(yàn)中碰到了很多異常,就是與Socket資源釋放有關(guān)的,比如說(shuō)我給的一個(gè)客戶端線程,但改客戶端關(guān)閉掉了,而我并沒(méi)有在容器中進(jìn)行remove該線程操作,那么由于該客戶端線程繼續(xù)在工作,所以會(huì)報(bào) java、net、SocketException 錯(cuò)誤
4、 server 無(wú)法 msg = in、readUTF();無(wú)法讀取到輸入流的信息。解決方法其實(shí)也就就是將該關(guān)閉的線程做remove操作。我可以加一個(gè)判斷客戶端線程就是否已死的線程,如果死了,就remove掉。本次實(shí)驗(yàn)的體會(huì)(結(jié)論)(10分)得分:本次實(shí)驗(yàn)感覺(jué)較難,但就是真正上手后覺(jué)得一旦做出一些東西,就有動(dòng)力去繼續(xù)往下做由于最近比較青睞java的原因,所以選擇了 java來(lái)編寫(xiě)這個(gè)程序,在充分的學(xué)習(xí)后終于讓客戶 端與服務(wù)端能夠通信,但就是想做出一個(gè)界面,所以又自學(xué)了 JFrame方面的內(nèi)容,搞出來(lái)一個(gè) 界面。思考題:(10分)思考題1:(4分)|得分:您所用的編程語(yǔ)言在Socket通信中用到
5、的主要類及其主要作用。1、DatalnputStream;:數(shù)據(jù)輸入流允許應(yīng)用程序以與機(jī)器無(wú)關(guān)方式從底層輸入流中讀取基本Java數(shù)據(jù)類型。應(yīng)用程序可以使用數(shù)據(jù)輸出流寫(xiě)入稍后由數(shù)據(jù)輸入流讀取的數(shù)據(jù)。DataOutputStream;:數(shù)據(jù)輸出流允許應(yīng)用程序以適當(dāng)方式將基本Java數(shù)據(jù)類型寫(xiě)入輸出流中。然后,應(yīng)用程序可以使用數(shù)據(jù)輸入流將數(shù)據(jù)讀入2、 socket類:用于服務(wù)器端程序與客戶端程序,實(shí)現(xiàn)雙方的數(shù)據(jù)通信。得分:思考題2:(6分)說(shuō)明TCP與UDP編程的主要差異與特點(diǎn)。(1) TCP(Transmission Control Protocol,傳輸控制協(xié)議) UDP(User Data P
6、rotocol,用戶數(shù)據(jù)報(bào)協(xié)議)(2) 最主要區(qū)別-傳輸可靠性,TCP可靠而UDP不可靠。真正交由網(wǎng)路傳送的 IP封包就是有 一定的體積限制的(IP封包的最大體積為 65536 bytes )。由于UDP不需要可靠傳輸,因此 相較于TCP來(lái)說(shuō),一大堆必需占據(jù)封包表頭的 over head都可省略,從而換取更大的 payroll 空間。 這樣的結(jié)果,將令到單一的IP封包在作 UDP連線時(shí)所攜載的資料要比 TCP連線 多更多。這就是靠犧牲可靠性而換取得來(lái)的(3) TCP提供的就是一個(gè)連線導(dǎo)向 (Connection Oriented)的可靠傳輸,而 UDP則就是一個(gè)非 連線型(Connection
7、less)的非可靠傳輸。應(yīng)用場(chǎng)合,對(duì)于某些訊息量較大、時(shí)效性大于可靠性的傳輸來(lái)說(shuō)(比方說(shuō)語(yǔ)音/影像),UDP的確就是個(gè)不錯(cuò)的選擇。(5)從速度上說(shuō),UDP比TCP快,UDP不需要運(yùn)用確認(rèn)機(jī)制來(lái)保證資料就是否正確的被接 收、不需要重傳遺失的資料、資料的接收可不必按順序進(jìn)行、也不提供回傳機(jī)制來(lái)控制資料流的速度。指導(dǎo)教師評(píng)語(yǔ)日期:附件1:1、 運(yùn)行環(huán)境:win7 ,win8,win 10等操作系統(tǒng)。2、編譯:通過(guò)Eclipse編譯,無(wú)任何錯(cuò)誤警告。3、實(shí)現(xiàn)環(huán)境:Eclipse附件2:使用方法:1、打開(kāi)服務(wù)端。2、打開(kāi)客戶端。3、在兩個(gè)端口都可以發(fā)送消息給另一個(gè)端口。4、關(guān)閉兩個(gè)端口。(如圖所示)TH
8、客戶黛 請(qǐng)輸入您要發(fā)送的涓息Z 挪務(wù)器請(qǐng)求槌接已連接到胭務(wù)器,可以開(kāi)始岌送消息雷輪德I O |回請(qǐng)輸入您要發(fā)送的消息帕勞器已正式啟動(dòng) 啟動(dòng)時(shí)間:S£ Oct22 10:5535 CST 2016等待客戶端連接容戶端已經(jīng)連接芨送的消息:老師你好!清輸入短要岌這的消息慨勢(shì)器已正式啟動(dòng) 啟動(dòng)時(shí)間:Sat Oct 22 10:5535 CST 2016 等待容戶塢連接容戶端已經(jīng)連接發(fā)送的消息:老師你好!茗戶端127.0 0/1;個(gè).0.01丈來(lái)1肖息:同學(xué)好!附件 3: 程序文件列表 1、服務(wù)端代碼 package cn 、 MyNET;import java、 io 、 *;import
9、java、 net 、*;import java、util 、 *;import java、awt 、*;import java、awt 、event 、ActionEvent;import java、awt 、event 、ActionListener;import javax、 swing 、 *;import java、awt 、*;import javax、 swing 、 *;public class Server extends JFrame/*/private static final long serialVersionUID = / 輸入消息框private JTextFie
10、ld jtf = new JTextField();/ 顯示框private JTextArea jta = new JTextArea();/IO 流 private DataInputStream inputFromClient; private DataOutputStream outputToClient;SuppressWarnings("unused") public static void main(String args) new Server();public Server()JPanel p = new JPanel();p 、 setLayout(ne
11、w BorderLayout(); / 設(shè)置格式布局、 WEST);設(shè)置對(duì)齊方式p、 add(new JLabel(" 請(qǐng)輸入您要發(fā)送的消息 "), BorderLayoutp 、 add(jtf, BorderLayout 、 CENTER);jtf、 setHorizontalAlignment(JTextField、 RIGHT); /、 CENTER);setLayout(new BorderLayout(); add(p, BorderLayout 、 NORTH); add(new JScrollPane(jta), BorderLayoutsetTitle(&
12、quot; 服務(wù)端 ");setSize(500, 300);setDefaultCloseOperation(JFrame、 EXIT_ON_CLOSE);setVisible(true); / 使可視化組建可見(jiàn)try jta、 append(" 服務(wù)器已正式啟動(dòng)啟動(dòng)時(shí)間 :" + new Date() +'n');jta、 append(" 等待客戶端連接 "+'n');/ 監(jiān)聽(tīng)連接請(qǐng)求、 accept();、 getInputStream();、 getOutputStream();SuppressWarn
13、ings("resource")Socket socket = new ServerSocket(8888) /IO 流 inputFromClient = new DataInputStream(socket outputToClient = new DataOutputStream(socket/ 獲取客戶端的名稱 與 IP、 getInetAddress();、 getHostName();、 getHostAddress();"+'n');jta、 append(" 客戶端已經(jīng)連接InetAddress inetAddress =
14、 socket String clientName = inetAddress String clientIP = inetAddresswhile(true)+ "發(fā)來(lái)消息 :String fromClient = inputFromClient、 readUTF();jta、 append(" 客戶端 " + clientName + " " + clientIP"+fromClient); catch (IOException e) jta 、 append(" 客戶端已斷開(kāi)連接 "+'n')
15、; private class TextFieldListener implements ActionListenerOverridepublic void actionPerformed(ActionEvent e) try outputToClient 、 writeUTF(jtf 、 getText() 、 trim() + 'n'); / 向服務(wù)器發(fā)送消息jta、 append(" 發(fā)送的消息 :" + jtf 、 getText() 、 trim() +'n');jtf、 setText("");/ 輸出后清空輸
16、入框 catch (IOException e1) System 、 err 、 println(e1);2、客戶端代碼 : package cn 、 MyNET;import java、awt 、BorderLayout;import java、awt 、Container;import java、awt 、Font;import java、awt 、event 、ActionEvent;import java、awt 、event 、ActionListener;import java、 io 、 DataInputStream;import java、 io 、 DataOutputSt
17、ream;import java、 io 、 IOException;import java、 net 、Socket;import java、text 、 SimpleDateFormat;import java、util 、 Calendar;import javax、 swing 、 JFrame;import javax、 swing 、 JLabel;import javax、 swing 、 JPanel;import javax、 swing 、 JScrollPane;import javax、 swing 、 JTextArea;import javax、 swing 、 J
18、TextField;public class Client extends JFrame /*/private static final long serialVersionUID = 24810448L; / 輸入消息框private JTextField jtf = new JTextField();/ 顯示區(qū)域 private JTextArea jta = new JTextArea();/IO 流 private DataOutputStream toServer; private DataInputStream fromServer;public static void main(
19、String args) new Client();public Client()JPanel p = new JPanel();p 、 setLayout(new BorderLayout(); / 設(shè)置格式布局p 、 add(new JLabel(" 請(qǐng)輸入您要發(fā)送的消息 "), BorderLayout 、 WEST);p 、 add(jtf, BorderLayout、 CENTER);jtf 、 setHorizontalAlignment(JTextField、 RIGHT); / 設(shè)置對(duì)齊方式setLayout(new BorderLayout();add(p
20、, BorderLayout、 NORTH);add(new JScrollPane(jta), BorderLayout 、 CENTER);jtf 、 addActionListener(new TextFieldListener(); /設(shè)置偵聽(tīng)器接口setTitle(" 客戶端 ");setSize(500, 300);setDefaultCloseOperation(JFrame、 EXIT_ON_CLOSE);setVisible(true); / 使可視化組建可見(jiàn)try jta 、 append(" 向服務(wù)器請(qǐng)求鏈接 "+'n');SuppressWarnings("resource")Socket socket = new Socket("localhost", 8888);fromServer = new DataInputStream(socket、 getInputStream();toServer = new DataOutputStream(socket、 getOutputStream();jta、 append(" 已連接到服務(wù)器 , 可以開(kāi)始發(fā)送消息 &quo
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 跨境電商與國(guó)際貿(mào)易關(guān)系探討
- 七年級(jí)必須收藏:名著《西游記》每回檢測(cè)題(26至30回)
- 質(zhì)量監(jiān)控與持續(xù)改進(jìn)的策略研究
- 八上名著《紅星照耀中國(guó)》期末測(cè)試卷(含答案)
- 浙江國(guó)企招聘2025溫州交運(yùn)集團(tuán)校園招聘9人筆試參考題庫(kù)附帶答案詳解
- 針對(duì)成人學(xué)習(xí)者的英語(yǔ)聽(tīng)說(shuō)教學(xué)策略
- 課標(biāo)專用天津市2024高考英語(yǔ)二輪復(fù)習(xí)滾動(dòng)題組5單項(xiàng)填空書(shū)面表達(dá)
- 高效可再生能源的辦公空間設(shè)計(jì)與應(yīng)用
- 浙江鴨2025版高考生物二輪復(fù)習(xí)第3講ATP和酶教案
- 四年級(jí)道德與法治上冊(cè)第四單元讓生活多一些綠色12低碳生活每一天第1-2課時(shí)教案新人教版
- 生物-天一大聯(lián)考2025屆高三四省聯(lián)考(陜晉青寧)試題和解析
- 汽車坡道玻璃雨棚施工方案
- 跨文化商務(wù)交際導(dǎo)論 課件 Unit 1 Culture
- 高效空調(diào)制冷機(jī)房智能控制系統(tǒng)技術(shù)規(guī)程
- 新高考英語(yǔ)讀后續(xù)寫(xiě)——人物描寫(xiě)高級(jí)表達(dá)素材
- CoDeSys編程手冊(cè)
- 幼兒園一日活動(dòng)流程表
- 中國(guó)民俗知識(shí)競(jìng)賽題(附答案和詳細(xì)解析)
- 散裝水泥罐體標(biāo)準(zhǔn)資料
- 原發(fā)性肝癌臨床路徑最新版
- 第3章一氧化碳變換
評(píng)論
0/150
提交評(píng)論