package com.sycamore.demo2.controller.socket; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; /** * 1.创建ServerSocket * 2.调用accept 等待请求 * 3.收到请求后,用返回的Socket创建Reader和Writer来接收和发送数据 * Reader接收到数据后保存到line,然后打印到控制台 * 再将数据发送到client,告诉client接收到的是什么数据 */ public class Server { public static void main(String arg[]){ try { //1.创建一个ServerSocket监听8080端口 ServerSocket server = new ServerSocket(8080); //2.accept方法进行监听,程序停下来等待连接请求,接收到请求后返回Socket Socket socket = server.accept(); //3.使用socket进行通信,创建BufferedReader读取数据 BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream())); String line = is.readLine(); System.out.println("从客户端接收的数据:"+line); //创建PrintWriter,用于发送数据 PrintWriter pw = new PrintWriter(socket.getOutputStream()); pw.println("接收数据:"+line); pw.flush(); //关闭资源 pw.close(); is.close(); socket.close(); server.close(); }catch (Exception e){ e.printStackTrace(); } } }
package com.sycamore.demo2.controller.socket; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; /** * 启动后自动将msg发送给服务端,然后再接收服务端返回的数据并打印到控制台 */ public class Client { public static void main(String arg[]){ String msg = "客户端数据"; try { //创建Socket。连接本机8080端口 Socket socket = new Socket("127.0.0.1",8080); //使用Socket创建PrintWriter和BufferedReader进行读写数据 PrintWriter pw = new PrintWriter(socket.getOutputStream()); BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream())); //发送数据 pw.println(msg); pw.flush(); //接收数据 String line = is.readLine(); System.out.println("从服务端接收的数据:"+line); //关闭资源 pw.close(); is.close(); socket.close(); }catch (Exception e){ e.printStackTrace(); } } }
原文:https://www.cnblogs.com/sycamore0802/p/11422970.html