




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
本文格式為Word版,下載可任意編輯——網(wǎng)絡(luò)試驗6Socket編程實現(xiàn)閑聊程序
南昌航空大學(xué)試驗報告
課程名稱:計算機網(wǎng)絡(luò)試驗名稱:Socket編程實現(xiàn)閑聊程序班級:090451班學(xué)生姓名:楊望學(xué)號:09045131指導(dǎo)教師評定:簽名:
一、
試驗?zāi)康模?/p>
1、把握網(wǎng)絡(luò)應(yīng)用程序的開發(fā)方法;
2、把握Client/Server結(jié)構(gòu)軟件的設(shè)計與開發(fā)方法3、把握Socket機制的工作原理。
二、
試驗題目:
使用Win32Socket函數(shù)實現(xiàn)閑聊程序:能相互對發(fā)文本消息。
三、服務(wù)端與客戶端連接工作流程圖:
開始監(jiān)聽有新客戶端請求連接服務(wù)器不允許允許連接?提醒錯誤信息允許建立連接更新用戶信息
四、收發(fā)消息工作流程圖:
1
向客戶端B發(fā)送消息監(jiān)聽是用戶B在上線?是用戶B在繁忙?是用戶B在隱身?否發(fā)送給用戶B在離線?客戶端B發(fā)送給服務(wù)器
五、試驗代碼:1、服務(wù)器端:packageyuchen;
importjava.io.BufferedReader;importjava.io.IOException;
importjava.io.InputStreamReader;importjava.io.PrintStream;.ServerSocket;.Socket;
importjava.util.StringTokenizer;importjava.util.Vector;publicclassChatServer{staticintport=5566;//端口號staticVectorclients=newVector(10);//存儲連接客戶信息staticServerSocketserver=null;//建立服務(wù)器socketstaticSocketsocket=null;//套接字連接publicChatServer(){try{System.out.println(\server=newServerSocket(port);//初始化服務(wù)器套接字while(true){socket=server.accept();//等待連接System.out.println(socket.getInetAddress()+\連接\\n\得到客戶機地址Clientclient=newClient(socket);
2
clients.add(client);//增加客戶線程到向量中client.start();//啟動線程notifyChatRoom();//監(jiān)視閑聊室連接變化}}catch(Exceptionex){ex.printStackTrace();//輸出出錯信息}}publicstaticvoidnotifyChatRoom(){//監(jiān)視客戶端線程StringBuffernewUser=newStringBuffer(\for(inti=0;i0){//遍歷整個VectorClientclient=(Client)clients.firstElement();//得到一個客戶端try{client.socket.close();}catch(IOExceptionex){ex.printStackTrace();//輸出錯誤信息}clients.removeElement(client);//移出客戶端}}publicstaticvoiddisconnect(Clientc){//斷開客戶端try{System.err.println(c.ip+\斷開連接\\n\}catch(Exceptionex){ex.printStackTrace();}clients.removeElement(c);c.socket=null;}
publicstaticvoidmain(String[]args){newChatServer();}classClientextendsThread{Socketsocket;//連接端口Stringname;//用戶姓名Stringip;//客戶端ip地址BufferedReaderreader;//輸入流PrintStreamps;//輸出流publicClient(Sockets){socket=s;try{reader=newBufferedReader(newInputStreamReader(s.getInputStream()));ps=newPrintStream(s.getOutputStream());//得到輸出流Stringinfo=reader.readLine();//讀取接收到的信息StringTokenizerstinfo=newStringTokenizer(info,\分解字符串Stringhead=stinfo.nextToken();//獲取關(guān)鍵字System.out.println(stinfo.toString());System.out.println(head);
3
if(stinfo.hasMoreTokens()){name=stinfo.nextToken();//獲取用戶名}if(stinfo.hasMoreTokens()){ip=stinfo.nextToken();//獲取IP地址}}catch(IOExceptionex){ex.printStackTrace();}System.out.println(name);System.out.println(ip);}publicvoidsend(StringBuffermsg){ps.println(msg);//輸出信息ps.flush();}publicvoidrun(){while(true){Stringline=null;try{line=reader.readLine();System.out.println(\}catch(IOExceptionex){ex.printStackTrace();//輸出錯誤信息ChatServer.disconnect(this);//斷開連接ChatServer.notifyChatRoom();//更新信息return;}if(line==null){//客戶離開ChatServer.disconnect(this);ChatServer.notifyChatRoom();return;}StringTokenizerst=newStringTokenizer(line,\分解字符串Stringkeyword=st.nextToken();if(keyword.equals(\發(fā)送來的閑聊信息StringBuffermsg=newStringBuffer(\msg.append(name);//在信息上增加用戶名msg.append(st.nextToken(\ChatServer.sendClients(msg);//發(fā)送閑聊語句到各個客戶端System.out.println(msg);}elseif(keyword.equals(\退出命令ChatServer.disconnect(this);//斷開連接ChatServer.notifyChatRoom();//刷新信息}}}}}2、客戶端:packageyuchen;importjava.awt.BorderLayout;importjava.awt.Button;importjava.awt.Color;importjava.awt.Label;importjava.awt.TextArea;importjava.awt.TextField;
importjava.awt.event.ActionEvent;
4
importjava.awt.event.ActionListener;importjava.io.BufferedReader;importjava.io.IOException;
importjava.io.InputStreamReader;importjava.io.PrintStream;.InetAddress;.Socket;
importjava.util.StringTokenizer;importjavax.swing.JFrame;
importjavax.swing.JOptionPane;importjavax.swing.JPanel;
publicclassChatClientextendsJFrameimplementsActionListener,RunnableTextFieldtfName=newTextField(15);//姓名輸入文本域ButtonbtConnect=newButton(\連接\連接按鈕ButtonbtDisconnect=newButton(\斷開連接\斷開連接按鈕TextAreatfChat=newTextArea(8,27);//顯示閑聊信息文本域ButtonbtSend=newButton(\發(fā)送\TextFieldtfMessage=newTextField(30);//閑聊輸入java.awt.Listlist1=newjava.awt.List(9);//顯示在線用戶信息Socketsocket=null;//連接端口PrintStreamps=null;//輸出流Listenlisten=null;classListenextendsThread{BufferedReaderreader;PrintStreamps;Stringcname;Socketsocket;ChatClientchatClient;publicListen(ChatClientclient,Stringname,Socketsocket){try{this.chatClient=client;this.socket=socket;ame=name;reader=newBufferedReader(newInputStreamReader(socket.getInputStream()));ps=newPrintStream(socket.getOutputS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)寵物租房合同范例
- 包裝物購銷合同范例
- 中介合同范本樣本
- 農(nóng)副產(chǎn)品馬蹄收購合同范本
- 別墅土建付款合同范本
- 涼山校園保潔合同范本
- 人資服務(wù)合同范本
- 全款車抵押合同范本
- 公里樁合同范本
- 勞務(wù)派遣未簽合同范例
- 滬科版八年級物理上冊 專題01 運動的世界【考題猜想】(92題18大類型)
- 消防設(shè)施救援培訓(xùn)考試題及答案
- 腎包膜下血腫護理
- 租船問題(教學(xué)設(shè)計)-2023-2024學(xué)年四年級下冊數(shù)學(xué)人教版
- 2024年A特種設(shè)備相關(guān)管理考試題庫及答案
- 數(shù)字化智能化園區(qū)建設(shè)水平評價標(biāo)準(zhǔn)(征求意見稿)
- 外研版(三起點)小學(xué)英語三年級下冊全冊同步練習(xí)(含答案)
- 幼兒園 《十個人快樂大搬家》繪本
- 手機短視頻拍攝與剪輯(微課版) 課件 第7章 視頻攝像
- 農(nóng)村建房清包工合同協(xié)議書
- 鎳礦石購銷合同
評論
0/150
提交評論