TCP協議是面向鏈接、可靠的、有序的,以字節流的方式發送數據。java
基於TCP實現網絡通訊的類:緩存
客戶端Socket類服務器
服務器端的ServerSocket類網絡
通訊實現步驟:socket
(1).建立ServerSocket和Socket.net
(2).打開鏈接到Socket的輸入、輸出流code
(3).按照協議對Socket進行讀寫操做server
(4).關閉輸入輸出流,關閉Socket資源
服務端實現方式:get
客戶端:
package socket; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket; /** *socket服務端 * */ public class TCPServer { public static void main(String[] args) { try { // 建立一個服務端socket實例,並綁定指定端口,同時監聽該端口 ServerSocket serversocket = new ServerSocket(7777); //調用accept()啓動端口監聽,等待客戶端請求 System.out.println("服務端已啓動,正在監聽......"); Socket socket = serversocket.accept();//監聽7777端口 InputStream is = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String info = br.readLine(); while(!"".equals(info) && info != null){ System.out.println("服務端捕獲到客戶端信息:######"+info); info = br.readLine(); } //關閉相關資源 socket.shutdownInput(); br.close(); isr.close(); is.close(); socket.close(); serversocket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
package socket; 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; import java.net.UnknownHostException; public class TCPClient { public static void main(String[] args) { try { //建立客戶端socket,指定服務端地址和端口 Socket socket = new Socket("localhost", 7777); //創建一個輸出流,用於向服務端發送信息 OutputStream os = socket.getOutputStream(); //建立一個打印流幷包裝輸出流 PrintWriter pw = new PrintWriter(os); pw.write("用戶名:admin 密碼:1234"); pw.flush();//刷新緩存 //關閉資源 socket.shutdownOutput(); pw.close(); os.close(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
輸出結果:
服務端已啓動,正在監聽......
服務端捕獲到客戶端信息:######用戶名:admin 密碼:1234