實(shí)驗(yàn)四-基于Socket的CS程序_第1頁(yè)
實(shí)驗(yàn)四-基于Socket的CS程序_第2頁(yè)
實(shí)驗(yàn)四-基于Socket的CS程序_第3頁(yè)
實(shí)驗(yàn)四-基于Socket的CS程序_第4頁(yè)
實(shí)驗(yàn)四-基于Socket的CS程序_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論