Sokect簡單入門(1)TCP協議一
阿新 • • 發佈:2018-11-08
一,伺服器端程式碼
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; /** * 伺服器端 * */ public class LoginServer { publicstatic void main(String[] args) { try { //1.建立一個伺服器Socket(ServerSocket)繫結指定埠並開始監聽 ServerSocket serverSocket=new ServerSocket(8800); //2.使用accept()方法阻塞等待監聽,獲得新的連線 System.out.println("等待連線"); Socket socket=serverSocket.accept(); System.out.println("已接收到連線,開始處理請求....."); //3.獲得輸入流 InputStream is=socket.getInputStream(); BufferedReader br=new BufferedReader(new InputStreamReader(is)); //獲得輸出流 OutputStream os=socket.getOutputStream(); PrintWriter pw=new PrintWriter(os);//4.讀取使用者輸入資訊 String info=null; while(!((info=br.readLine())==null)){ System.out.println("我是伺服器,使用者資訊為:"+info); } //給客戶一個響應 String reply="welcome!"; pw.write(reply); pw.flush(); //5.關閉資源 pw.close(); os.close(); br.close(); is.close(); socket.close(); serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } }
二、客戶端程式碼
1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStream; 4 import java.io.InputStreamReader; 5 import java.io.OutputStream; 6 import java.io.PrintWriter; 7 import java.net.Socket; 8 import java.net.UnknownHostException; 9 10 /** 11 * 客戶端 12 * */ 13 public class LoginClient { 14 public static void main(String[] args) { 15 try { 16 //1.建立客戶端Socket連線,指定伺服器的位置以及埠 17 Socket socket=new Socket("localhost",8800); 18 //2.得到Socket的讀寫流 19 OutputStream os=socket.getOutputStream(); 20 PrintWriter pw=new PrintWriter(os); 21 //輸入流 22 InputStream is=socket.getInputStream(); 23 BufferedReader br=new BufferedReader(new InputStreamReader(is)); 24 //3.利用流按照一定的協議對Socket進行讀/寫操作 25 String info="使用者名稱:Tom;使用者密碼:123456"; 26 pw.write(info); 27 pw.flush(); 28 socket.shutdownOutput(); 29 //接受伺服器的響應並列印顯示 30 String reply=null; 31 while(!((reply=br.readLine())==null)){ 32 System.out.println("我是客戶端,伺服器的響應為:"+reply); 33 } 34 //4.關閉資源 35 br.close(); 36 is.close(); 37 pw.close(); 38 os.close(); 39 socket.close(); 40 } catch (UnknownHostException e) { 41 // TODO Auto-generated catch block 42 e.printStackTrace(); 43 } catch (IOException e) { 44 // TODO Auto-generated catch block 45 e.printStackTrace(); 46 } 47 48 } 49 }