標籤:
類比java scoket服務端和用戶端編程
import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;public class TalkClient { public static void main(String args[]) { try { // 向原生8000連接埠發出客戶請求 Socket socket = new Socket("127.0.0.1", 8000); // 由系統標準輸入裝置構造BufferedReader對象 BufferedReader sin = new BufferedReader(new InputStreamReader( System.in)); // 由Socket對象得到輸出資料流,並構造PrintWriter對象 PrintWriter os = new PrintWriter(socket.getOutputStream()); String readline,receive; readline = sin.readLine(); // 從系統標準輸入讀入一字串 BufferedReader is = new BufferedReader(new InputStreamReader( socket.getInputStream())); while (!readline.equals("bye")) { // 若從標準輸入讀入的字串為 "bye"則停止迴圈 os.println(readline); // 將從系統標準輸入讀入的字串輸出到Server os.flush(); // 重新整理輸出資料流,使Server馬上收到該字串 System.out.println("client send:" + readline); //Thread.sleep(1000); receive = is.readLine(); System.out.println(receive); // 從Server讀入一字串,並列印到標準輸出上 readline = sin.readLine(); // 從系統標準輸入讀入一字串 } // 繼續迴圈 os.close(); // 關閉Socket輸出資料流 is.close(); // 關閉Socket輸入資料流 socket.close(); // 關閉Socket } catch (Exception e) { } }}
import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class TalkServer { public static void main(String args[]) { try { ServerSocket server = null; try { server = new ServerSocket(8000); // 建立一個ServerSocket在連接埠8000監聽客戶請求 } catch (Exception e) { System.out.println("can not listen to:" + e); // 出錯,列印出錯資訊 } Socket socket = null; try { socket = server.accept(); // 使用accept()阻塞等待客戶請求,有客戶 // 請求到來則產生一個Socket對象,並繼續執行 } catch (Exception e) { System.out.println("Error." + e); // 出錯,列印出錯資訊 } String line; BufferedReader is = new BufferedReader(new InputStreamReader( socket.getInputStream())); // 由Socket對象得到輸入資料流,並構造相應的BufferedReader對象 PrintWriter os = new PrintWriter(socket.getOutputStream()); // 由Socket對象得到輸出資料流,並構造PrintWriter對象 line = is.readLine(); // 從標準輸入讀入一字串 while (!line.equals("bye")) { // 如果該字串為 "bye",則停止迴圈 os.println("server send:yeah,"+line); // 向用戶端輸出該字串 os.flush(); // 重新整理輸出資料流,使Client馬上收到該字串 System.out.println("Server receive:" + line); // 從Client讀入一字串,並列印到標準輸出上 line = is.readLine(); // 從系統標準輸入讀入一字串 }// 繼續迴圈 os.close(); // 關閉Socket輸出資料流 is.close(); // 關閉Socket輸入資料流 socket.close(); // 關閉Socket server.close(); // 關閉ServerSocket } catch (Exception e) { } }}
java socket編程