基于Socket的CS程序開(kāi)發(fā)_第1頁(yè)
基于Socket的CS程序開(kāi)發(fā)_第2頁(yè)
基于Socket的CS程序開(kāi)發(fā)_第3頁(yè)
基于Socket的CS程序開(kāi)發(fā)_第4頁(yè)
基于Socket的CS程序開(kāi)發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩3頁(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)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上淮海工學(xué)院計(jì)算機(jī)工程學(xué)院實(shí)驗(yàn)報(bào)告書(shū)課程名: 計(jì)算機(jī)網(wǎng)絡(luò) 題 目: 基于Socket的C/S程序開(kāi)發(fā) 班 級(jí): 軟件102班 學(xué) 號(hào): 姓 名: 葉海飚 評(píng)語(yǔ):成績(jī): 指導(dǎo)教師: 批閱時(shí)間: 年 月 日專心-專注-專業(yè)一實(shí)驗(yàn)?zāi)康呐c要求 理解和鞏固傳輸層與套接字的基本知識(shí),掌握利用套接字實(shí)現(xiàn)面向連接的數(shù)據(jù)傳輸?shù)囊话惴椒?,深入理解客?服務(wù)器工作模式,學(xué)會(huì)簡(jiǎn)單的客戶/服務(wù)器程序的開(kāi)發(fā)。二實(shí)驗(yàn)內(nèi)容或題目利用Java語(yǔ)言提供的Socket技術(shù),建立一個(gè)C/S模式的應(yīng)用,允許客戶端用戶輸入2個(gè)整數(shù),服務(wù)器端接收這2個(gè)整數(shù),并計(jì)算出它們的和、差、積、商,最后送回客戶端三實(shí)驗(yàn)步驟與源

2、程序1、客戶端源代碼如下:import .*;import java.io.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Client extends Frame implements Runnable,ActionListener DataInputStream in = null; DataOutputStream out = null; Panel p; Label lab1,lab2,lab3; TextField tf1,tf2,tf3;Button connection,s

3、end;Socket socket = null;Thread thread;TextArea text;public Client() super("客戶端:"); setLayout(new FlowLayout(); setSize(300,250); /設(shè)置窗口大小 setLocation(200,200);/設(shè)置窗口顯示位置 setResizable(false); p=new Panel(); p.setLayout(null); p.setBounds(0,0,300,250); addWindowListener(new WindowAdapter() pu

4、blic void windowClosing(WindowEvent e) System.exit(0); ); text = new TextArea(); lab1=new Label("輸入IP地址:"); lab1.setBounds(5,5,60,25); lab2=new Label("第一個(gè)數(shù)字:"); lab2.setBounds(5,35,60,25); lab3=new Label("第二個(gè)數(shù)字:"); lab3.setBounds(5,65,60,25); tf1=new TextField(10); tf1.

5、setBounds(80,5,100,25); tf2=new TextField(10); tf2.setBounds(80,35,100,25); tf3=new TextField(10); tf3.setBounds(80,65,100,25); connection=new Button("連接服務(wù)器"); connection.setBounds(200,5,90,25); connection.addActionListener(this); send=new Button("發(fā)送數(shù)據(jù)"); send.setBounds(200,65,90

6、,25); send.addActionListener(this); text=new TextArea(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=new Socket(); thread = new Thread(this); public void

7、actionPerformed(ActionEvent e) if(e.getSource()=connection) InetAddress address=null; InetSocketAddress socketAddress=null; try /請(qǐng)求和服務(wù)器建立套接字連接: if(socket.isConnected() else address=InetAddress.getByName(tf1.getText(); socketAddress=new InetSocketAddress(address,8755); socket.connect(socketAddress,20

8、00);/*等待2秒中 in =new DataInputStream(socket.getInputStream(); out = new DataOutputStream(socket.getOutputStream();send.setEnabled(true);JOptionPane.showMessageDialog(this,"連接成功!","成功!",JOptionPane.INFORMATION_MESSAGE); thread.start(); catch(IOException ex) System.out.println("

9、;time out"+ex); System.out.println(socketAddress.getHostName()+":"+socketAddress.getPort(); JOptionPane.showMessageDialog(this,"連接超時(shí)!","錯(cuò)誤!",JOptionPane.ERROR_MESSAGE); new Client(); dispose(); if(e.getSource()=send) String s=tf2.getText()+","+tf3.getText

10、(); if(s!=null) try out.writeUTF(s); catch(IOException e1) public void run() String s=null; while(true) try s=in.readUTF(); text.append(s+"n"); catch(IOException e) text.append("與服務(wù)器已斷開(kāi)"); break; public static void main(String args) new Client(); 2、服務(wù)器端源代碼如下:import .*;import java

11、.util.*;import java.io.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Server public Server() ServerSocket server=null; Server_thread thread; Socket you=null; while(true) try server=new ServerSocket(8755); catch(IOException e1) System.out.println("正在監(jiān)聽(tīng)"); /Ser

12、verSocket對(duì)象不能重復(fù)創(chuàng)建 try System.out.println("等待客戶呼叫"); you=server.accept(); System.out.println("已連接到客戶"); System.out.println("客戶的地址:"+you.getInetAddress(); catch (IOException e) System.out.println("正在等待客戶"); if(you!=null) new Server_thread(you).start(); /為每個(gè)客戶啟動(dòng)一

13、個(gè)專門的線程 public static void main(String args) new Server(); class Server_thread extends Thread Socket socket; DataOutputStream out=null; DataInputStream in=null; String s=null; boolean quesion=false; Server_thread(Socket t) socket=t; try out=new DataOutputStream(socket.getOutputStream(); in=new DataIn

14、putStream(socket.getInputStream(); catch (IOException e) public void run() while(true) double a=new double2; int i=0; try s=in.readUTF();/堵塞狀態(tài),除非讀取到信息 quesion=false; StringTokenizer fenxi=new StringTokenizer(s,","); while(fenxi.hasMoreTokens() && quesion=false) String temp=fenxi.ne

15、xtToken(); try ai=Double.valueOf(temp).doubleValue();i+; catch(NumberFormatException e) out.writeUTF("請(qǐng)輸入數(shù)字字符"); quesion=true; if(quesion=false) double s=a0+a1; double p=a0-a1; double q=a0*a1; double r=a0/a1; out.writeUTF(" "+a0+"+"+a1+"="+s); out.writeUTF(&qu

16、ot; "+a0+"-"+a1+"="+p); out.writeUTF(" "+a0+"*"+a1+"="+q); out.writeUTF(" "+a0+"/"+a1+"="+r);System.out.println("客服端數(shù)據(jù):"+a0+"和"+a1); System.out.println("完成客戶端運(yùn)算"); catch (IOException e)System.out.println("客戶離開(kāi)"); return; 四測(cè)試數(shù)據(jù)與實(shí)驗(yàn)結(jié)果建立連接:發(fā)送數(shù)據(jù):五結(jié)果分析與實(shí)驗(yàn)體會(huì)本次實(shí)驗(yàn)利用Java語(yǔ)言提供的Socket技術(shù),我根據(jù)java課本完成實(shí)驗(yàn)所需要的程序,成功實(shí)現(xiàn)相應(yīng)的功能。通過(guò)本次實(shí)驗(yàn),我理解和鞏固傳輸層與套接字的基本知識(shí),掌握利用套接字實(shí)現(xiàn)面向連接的數(shù)據(jù)傳輸?shù)囊话惴椒ǎ钊肜斫饪蛻?服務(wù)器工作模式,學(xué)會(huì)簡(jiǎn)單的客戶/服務(wù)器程序的開(kāi)發(fā)。六思考題1.Java語(yǔ)言中,服務(wù)器端和客戶端套接字

溫馨提示

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

評(píng)論

0/150

提交評(píng)論