版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
淮海工學(xué)院計(jì)算機(jī)工程學(xué)院實(shí)驗(yàn)報(bào)告書課程名:計(jì)算機(jī)網(wǎng)絡(luò)題目:基于Socket的C/S程序開發(fā)班級(jí):G學(xué)號(hào):姓名:評(píng)語(yǔ):評(píng)語(yǔ):成績(jī):指導(dǎo)教師:批閱時(shí)間:年月日《計(jì)算機(jī)網(wǎng)絡(luò)》實(shí)驗(yàn)報(bào)告 -PAGE1-實(shí)驗(yàn)?zāi)康睦斫夂挽柟虃鬏攲优c套接字的基本知識(shí),掌握利用套接字實(shí)現(xiàn)面向連接的數(shù)據(jù)傳輸?shù)囊话惴椒ǎ钊肜斫饪蛻?服務(wù)器工作模式,學(xué)會(huì)簡(jiǎn)單的客戶/服務(wù)器程序的開發(fā)。實(shí)驗(yàn)內(nèi)容利用Java語(yǔ)言提供的Socket技術(shù),建立一個(gè)C/S模式的應(yīng)用,允許客戶端用戶輸入2個(gè)整數(shù),服務(wù)器端接收這2個(gè)整數(shù),并計(jì)算出它們的和、差、積、商,最后送回客戶端。服務(wù)器端ServerSocket類(.ServerSocket){System.out.println("正在等待客戶");}if(you!=null){newServer_thread(you).start();}//為每個(gè)客戶啟動(dòng)一個(gè)專門的線程}}publicstaticvoidmain(Stringargs[]){newServer();}}classServer_threadextendsThread{Socketsocket;DataOutputStreamout=null;DataInputStreamin=null;Strings=null;booleanquesion=false;Server_thread(Sockett){socket=t;try{out=newDataOutputStream(socket.getOutputStream());in=newDataInputStream(socket.getInputStream());}catch(IOExceptione){}}publicvoidrun(){while(true){doublea[]=newdouble[2];inti=0;try{s=in.readUTF();//堵塞狀態(tài),除非讀取到信息quesion=false;StringTokenizerfenxi=newStringTokenizer(s,",");while(fenxi.hasMoreTokens()&&quesion==false){Stringtemp=fenxi.nextToken();try{a[i]=Double.valueOf(temp).doubleValue();i++;}catch(NumberFormatExceptione){out.writeUTF("請(qǐng)輸入數(shù)字字符");quesion=true;}}if(quesion==false){doubles=a[0]+a[1];doublep=a[0]-a[1];doubleq=a[0]*a[1];doubler=a[0]/a[1];out.writeUTF(""+a[0]+"+"+a[1]+"="+s);out.writeUTF(""+a[0]+"-"+a[1]+"="+p);out.writeUTF(""+a[0]+"*"+a[1]+"="+q);out.writeUTF(""+a[0]+"/"+a[1]+"="+r);System.out.println("客服端數(shù)據(jù):"+a[0]+"和"+a[1]);System.out.println("完成客戶端運(yùn)算");}}catch(IOExceptione){System.out.println("客戶離開");return;}}}}客戶端:.*;importjava.io.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassClientextendsFrameimplementsRunnable,ActionListener{DataInputStreamin=null;DataOutputStreamout=null;Panelp;Labellab1,lab2,lab3;TextFieldtf1,tf2,tf3;Buttonconnection,send;Socketsocket=null;Threadthread;TextAreatext;publicClient(){super("客戶端:");setLayout(newFlowLayout());setSize(300,250);//設(shè)置窗口大小setLocation(200,200);//設(shè)置窗口顯示位置setResizable(false);p=newPanel();p.setLayout(null);p.setBounds(0,0,300,250);addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});text=newTextArea();lab1=newLabel("輸入IP地址:");lab1.setBounds(5,5,60,25);lab2=newLabel("第一個(gè)數(shù)字:");lab2.setBounds(5,35,60,25);lab3=newLabel("第二個(gè)數(shù)字:");lab3.setBounds(5,65,60,25);tf1=newTextField(10);tf1.setBounds(80,5,100,25);tf2=newTextField(10);tf2.setBounds(80,35,100,25);tf3=newTextField(10);tf3.setBounds(80,65,100,25);connection=newButton("連接服務(wù)器");connection.setBounds(200,5,90,25);connection.addActionListener(this);send=newButton("發(fā)送數(shù)據(jù)");send.setBounds(200,65,90,25);send.addActionListener(this);text=newTextArea(200,50);text.setBounds(5,100,290,110);p.add(lab1);p.add(lab2);p.add(lab3);p.add(tf1);p.add(tf2);p.add(tf3);p.add(connection);p.add(send);p.add(text);add(p);setVisible(true);socket=newSocket();thread=newThread(this);}publicvoidactionPerformed(ActionEvente){if(e.getSource()==connection){InetAddressaddress=null;InetSocketAddresssocketAddress=null;try//請(qǐng)求和服務(wù)器建立套接字連接:{if(socket.isConnected()){}else{address=InetAddress.getByName(tf1.getText());socketAddress=newInetSocketAddress(address,8755);socket.connect(socketAddress,2000);//*等待2秒中in=newDataInputStream(socket.getInputStream());out=newDataOutputStream(socket.getOutputStream());send.setEnabled(true);JOptionPane.showMessageDialog(this,"連接成功!","成功!",JOptionPane.INFORMATION_MESSAGE);thread.start();}}catch(IOExceptionex){System.out.println("timeout"+ex);System.out.println(socketAddress.getHostName()+":"+socketAddress.getPort());JOptionPane.showMessageDialog(this,"連接超時(shí)!","錯(cuò)誤!",JOptionPane.ERROR_MESSAGE);newClient();dispose();}}if(e.getSource()==send){Strings=tf2.getText()+","+tf3.getText();if(s!=null){try{out.writeUTF(s);}catch(IOExceptione1){}}}}publicvoidrun(){Strings=null;while(true){try{s=in.readUTF();text.append(s+"\n");}catch(IOExceptione){text.append("與服務(wù)器已斷開");break;}}}publicstaticvoidmain(Stringargs[]){newClient();}}測(cè)試數(shù)據(jù)與實(shí)驗(yàn)結(jié)果服務(wù)器:客戶端:結(jié)果分析與實(shí)驗(yàn)體會(huì)通過(guò)這次實(shí)驗(yàn),進(jìn)一步了解了套接字一些用法,并且鞏固了傳輸層與套接字的基本知識(shí);以前對(duì)套接字不是很熟悉,經(jīng)過(guò)這次實(shí)驗(yàn),明白了套接字在網(wǎng)絡(luò)編程中有著重要的角色,比如我們使用的聊天工具就是利用套接字來(lái)實(shí)現(xiàn)的。六、思考題Java語(yǔ)言中,服務(wù)器端和客戶端套接字對(duì)象類相同嗎?如不同,有何差別
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職烹飪(傳統(tǒng)菜肴制作)試題及答案
- 2025年高職(老年服務(wù)與管理)老年人康復(fù)護(hù)理試題及答案
- 2025年高職(環(huán)境工程技術(shù))環(huán)境監(jiān)理基礎(chǔ)試題及答案
- 2025年高職美發(fā)與形象設(shè)計(jì)(形象設(shè)計(jì)創(chuàng)意)試題及答案
- 2025年高職新材料(高分子應(yīng)用實(shí)操)試題及答案
- 2025年大學(xué)安全教育(食品安全知識(shí))試題及答案
- 2025年高職移動(dòng)應(yīng)用技術(shù)與服務(wù)(用戶體驗(yàn)設(shè)計(jì))試題及答案
- 2025年大學(xué)心理學(xué)(人格心理學(xué)實(shí)驗(yàn))試題及答案
- 2026年稅務(wù)實(shí)務(wù)(稅務(wù)登記)試題及答案
- 2026年行政管理(公文流轉(zhuǎn)效率)試題及答案
- 2025海康威視安檢機(jī)用戶手冊(cè)
- 【語(yǔ)文】西安高新一小小學(xué)四年級(jí)上冊(cè)期末試題
- GB/T 9439-2023灰鑄鐵件
- YY/T 0992-2023內(nèi)鏡清洗工作站
- 建筑工程材料見證取樣以及試驗(yàn)檢測(cè)內(nèi)容大全
- ADCOLE+操作手冊(cè)模版
- 餐飲部物品清單
- 碧桂園展示區(qū)品質(zhì)驗(yàn)收評(píng)分表(2017版)
- GB/T 25974.3-2010煤礦用液壓支架第3部分:液壓控制系統(tǒng)及閥
- FZ/T 81006-2017牛仔服裝
- 脊椎保養(yǎng)理療課件
評(píng)論
0/150
提交評(píng)論