第四次考核
阿新 • • 發佈:2018-12-14
碼雲地址:https://gitee.com/sfr123/fourth_assessment/tree/master
使用套接寫連線編寫一個簡單的聊天室程式,客戶端主函式放在Client_Main.java檔案中,伺服器端主函式放在Server_Main.java檔案中
要求:
- 1.客戶端從控制檯進行輸入,並將客戶端的輸出內容和時間儲存到“學號.txt”檔案中
- 2.伺服器端讀取到客戶端的程式後,給客戶端以迴應,並將客戶端的輸入內容與服務端的輸出內容、時間儲存到文字檔案中
- 3.要求伺服器端可以實現同時與多個客戶端進行通訊,與每一個客戶端通訊的內容,儲存為一個“學號_ip.txt”的檔案
- 4.4.提交檔案結果包括:程式碼,通訊後生成的txt檔案
步驟:
伺服器建立ServerSocket物件,使用accept()方法,客戶端建立Socket物件和伺服器連線
客戶端程式碼
import java.net.*; import java.io.*; public class Client_Main{ public static void main (String args[]){ String [] mess ={"你好"}; Socket mysocket; DataInputStream in=null; DataOutputStream out=null; try{ mysocket = new Socket("127.0.0.1",2010); in = new DataInputStream(mysocket.getInputStream()); out = new DataOutputStream(mysocket.getOutputStream()); for(int i=0;i<mess.length;i++){ out.writeUTF(mess[i]); String s=in.readUTF(); System.out.println("客戶端收到伺服器的回答:"+s); Thread.sleep(500); } } catch(Exception e){ System.out.println(" 伺服器已斷開"+e); } } }
伺服器
import java.net.*; import java.io.*; public class Server_Main{ public static void main(String args[]){ String [] answer = {"您好"}; ServerSocket serverForClient = null; Socket socketOnServer = null; DataOutputStream out=null; DataInputStream in=null; try{ System.out.println("等待客戶呼叫"); socketOnServer = serverForClient.accept(); out = new DataOutputStream(socketOnServer.getOutputStream()); in = new DataInputStream(socketOnServer.getInputStream()); for(int i=0;i<answer.length;i++){ String s = in.readUTF(); System.out.println("伺服器收到客戶的提問:"+s); out.writeUTF(answer[i]); Thread.sleep(500); } } catch(Exception e){ System.out.println("客戶已斷開"+e); } } }
程式碼參考書上來寫的,和題目有些不符,然後沒寫執行結果。知識掌握的不夠好,需要多練習。