兩類傳輸協議:TCP UDP
TCP就是Tranfer Control Protocol的簡稱,是一種面向連接的保證可靠傳輸的協議。通過TCP協議傳輸,得到的是一個順序的無差錯的數據流。發送
方和接收方的成對的兩個socket之間必須建 立連接,以便在TCP協議的基礎上進行通信,當一個socket(通常都是server socket)等待建立連接時,另一個
socket可以要求進行連接,一旦這兩個socket連接起來,它們就可以進行雙向數據傳輸,雙方都可以進行發送 或接收操作。
UDP就是Use Datagram Protocol的簡稱,是一種無連接的協議,每個數據報都是一個獨立的信息,包括完整的源地址或目的地址,它在網絡上以任何可能的
路徑傳往目的地,因此能否到達目的地,到達目的地的時間以及內容的正確性都是不能被保證的。
Socket網絡編程可以分為以下步驟
1.建立連接
2.打開Socket關聯的輸出流
3.數據流讀取信息
4.關閉所有數據流和Socket
Socket實現原理機制
1.通信兩端都有Socket
2.網絡通信其實就是Socket間的通信
3.數據在兩個Socket間通過IO傳輸
Socket 通信模型
進行網絡通信時,Socket需要借助數據流來完成數據流的傳遞工作

如何實現多客戶請求呢

采用多線程方式
一個專門負責監聽的應用服務程序
一個專門負責處理請求的線程程序
DatagramPacket類
封裝了數據報的數據,數據長度,目標地址和目標端口
DatagramSocket類
接收和發送DatagramPacket對象封裝好的數據報
基於UDP協議的Socket網絡編程步驟
1.利用DatagramPacket對象封裝數據報
2.利用DatagramSocket發送數據報
3.利用DatagramSocket接收數據報
4.利用DatagramPacket處理數據報
使用兩種協議實現簡單的對話功能(簡單的對話功能)


ServerSocket sk=new ServerSocket(11111); //2.監聽 Socket s=sk.accept(); //打包數據 BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream())); BufferedReader bw=new BufferedReader(new InputStreamReader(System.in)); OutputStream os=s.getOutputStream(); String line=null; while((line=br.readLine())!=null){ System.out.println("Client \t"+line); os.write(bw.readLine().getBytes()); } //釋放資源 s.close(); //sk.close();
Socket sk=new Socket("192.168.111.1",11111); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(sk.getOutputStream())); String line=null; while((line=br.readLine())!=null){ bw.write(line); bw.newLine(); bw.flush(); InputStream is=sk.getInputStream(); byte [] by=new byte[1024]; int num=is.read(by); String h=new String(by, 0, num); System.out.println("Service:\t"+h); } //br.close(); //bw.close(); sk.close(); }
實現結果

==============================================

=======================================

========================================

