服务端代码: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