實驗四-基于Socket的CS程序_第1頁
實驗四-基于Socket的CS程序_第2頁
實驗四-基于Socket的CS程序_第3頁
實驗四-基于Socket的CS程序_第4頁
實驗四-基于Socket的CS程序_第5頁
已閱讀5頁,還剩9頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、淮海工學院計算機工程學院實驗報告書課程名:計算機網絡題 目: 基于socket的c/s程序開發班 級:g學 號:姓 名:評語:成績: 指導教師: 批閱時間:實驗目的理解和鞏固傳輸層與套接字的基本知識,掌握利用套接字實現面向連接的數據傳輸 的一般方法,深入理解客戶/服務器工作模式,學會簡單的客戶/服務器程序的開發實驗內容利用java語言提供的socket技術,建立一個c/s模式的應用,允許客戶端用戶輸 入2個整數,服務器端接收這2個整數,并計算出它們的和、差、積、商,最后送 回客戶端。應用程序高層socket ahserver端s 1:創建sedis 口 diet對象;在某個肉口監聽服務 “俵受

2、客戶%的道義與 - 客戶需建立融傳輸層低層網際層qp)網絡接口層client 端建龍連接c 1:創建sock式對象,連接 k 服務器端的監聽端口“浸甥蠲蠹嬲。刎通信s 4:識別兩整數,進行加減乘除c 2二從鍵盤設入兩個整數c 3:通過eethitpiitstit31no1向虐務器專送數據3_6:釋放連接,關閉服務器*釋放連接c 6:釋放連接數板一再皚 c 4:通過配uupihstreiuu0 陽砧制“一,從服窯礴讀數據; _s 5:通過葬1011墟口181116髓1110'c 5出示般麟一,向直戶端愛送數據服務器端 serversocket 類(.serversocket )構 造 方

3、 法 :public serversocket(int port) throws ioexception s_1接受連接請求: public socket accept() throws ioexception s_2客戶端 socket 類( .socket )構 造 方 法 : public socket(string host, int port) throwsunknownhostexception, ioexception c_1讀 取 數 據 : public inputstreamgetinputstream()throwsioexception s_5, c_3發 送 數 據

4、: publicoutputstreamgetoutputstream()throwsioexception s_3, c_4服務器端編程創建 serversocket 對象serversocket server=new serversocket(8000);監聽來自客戶端的請求socket linksocket=server.accept();與客戶端進行通信利用 linksocket.getinputstream() 接收客戶端數據;對讀取的數據進行加、減、乘、除計算;利用 linksocket.getoutputstream() 向客戶端發送計算結果;監聽結束時關閉服務器server.c

5、lose();客戶端編程建立連接socket client=new socket(“ servercomputername” , 8000);與服務器進行通信從鍵盤讀入兩個整數;利用 client.getoutputstream() 向服務器端發送數據;利用 client.getinputstream() 接收服務器端結果;顯示從服務器端得到的結果;釋放連接client.close();要求: 在一臺主機上安裝并運行服務器端程序, 在另一臺計算機上安裝并運行客戶端程序,測試所編寫的程序能否完成規定的功能。三、 實驗步驟與源程序源程序:服務器:import .*;import java.util

6、.*;import java.io.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class serverpublic server() serversocket server=null;server_thread thread;socket you=null;while(true) try server=new serversocket(8755); catch(ioexception e1) system.out.println("正在監聽 "); /serversocke

7、t 對象不能重復創建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(); / public static

8、 void main(string args) new server(); class server_thread extends threadsocket 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 datainputstream(socket.getinputstr

9、eam();catch (ioexception e) public void run() while(true) double a=new double2; int i=0;trys=in.readutf();/ 堵塞狀態,除非讀取到信息quesion=false;stringtokenizer fenxi=new stringtokenizer(s,",");while(fenxi.hasmoretokens() && quesion=false)string temp=fenxi.nexttoken();try ai=double.valueof(te

10、mp).doublevalue();i+; catch(numberformatexception e) out.writeutf(" 請輸入數字字符");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(" "+a0+"-"+a1+"=&q

11、uot;+p);out.writeutf(" "+a0+"*"+a1+"="+q);out.writeutf(" "+a0+"/"+a1+"="+r);system.out.println("客服端數據:"+a0+"和"+a1);system.out.println("完成客戶端運算");catch (ioexception e)system.out.println("客戶離開 "); retur

12、n; 客戶端: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,send;socket

13、 socket = null; thread thread; textarea text; public client() super(" 客戶端: ");setlayout(new flowlayout();setsize(300,250); / 設置窗口大小setlocation(200,200);/ 設置窗口顯示位置setresizable(false);p=new panel();p.setlayout(null); p.setbounds(0,0,300,250);addwindowlistener(new windowadapter()public void w

14、indowclosing(windowevent e) system.exit(0); );text = new textarea();lab1=new label (" 輸入 ip 地址 :"); lab1.setbounds(5,5,60,25);lab2=new label (" 第一個數字:");lab2.setbounds(5,35,60,25);lab3=new label (" 第二個數字:");lab3.setbounds(5,65,60,25);tf1=new textfield(10); tf1.setbounds

15、(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 (" 連接服務器 ");connection.setbounds(200,5,90,25);connection.addactionlistener(this);send=new button (" 發送數據 ");send.setbounds(200,65,90,25);send

16、.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 actionperformed(acti

17、onevent e) if(e.getsource()=connection)inetaddress address=null;inetsocketaddress socketaddress=null;try / 請求和服務器建立套接字連接:if(socket.isconnected() else address=inetaddress.getbyname(tf1.gettext();socketaddress=new inetsocketaddress(address,8755);socket.connect(socketaddress,2000); /* 等待 2 秒中in =new da

18、tainputstream(socket.getinputstream();out = new dataoutputstream(socket.getoutputstream(); send.setenabled(true);joptionpane.showmessagedialog(this, "連接成功 !"," 成功! ", joptionpane.information_message);thread.start(); catch(ioexception ex) system.out.println("time out"+ex

19、);system.out.println(socketaddress.gethostname()+":"+socketaddress.getport();joptionpane.showmessagedialog (this," 連接超時 !"," 錯誤! ", joptionpane.error_message);new client();dispose();if(e.getsource()=send) string s=tf2.gettext()+","+tf3.gettext();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)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論