服務端代碼:java
package com.haida.wuwnlun.socket; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class Server { public static void main(String[] args) { try { ServerSocket serverSocket = new ServerSocket(23123); while(true) { Socket socket = serverSocket.accept(); InputStream input = socket.getInputStream(); int length = 1024; byte[] b = new byte[length]; int i = 0; while(i!=-1) { i = input.read(b);//若是Client端中的socket不執行close(),server端的該處就一直阻塞在這裏,不往下執行。 if(i!=-1) { System.out.println(new String(b).toString()); } } OutputStream out = socket.getOutputStream(); PrintWriter pout = new PrintWriter(out); pout.println("服務器已經收到你的來電!"); pout.flush(); socket.close(); } } catch (IOException e) { e.printStackTrace(); } } }
客戶端代碼:服務器
package com.haida.wuwnlun.socket; import java.io.IOException; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; public class Client { public static void main(String[] args) throws UnknownHostException, IOException, InterruptedException { Socket socket = new Socket("127.0.0.1", 23123); OutputStream out = socket.getOutputStream(); String content = "你好嗎?我叫吳文倫!"; out.write(content.getBytes("Utf-8")); out.flush(); socket.close(); } }
抓包分析圖:socket
當socket正在讀或者正在寫,或者處在讀寫阻塞狀態的時候,對端發過來rst標誌時,本端
就會出現以下報錯問題:.net
須要腦補的知識點:三次握手,四次揮手code