🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 通信步骤 ### 服务器端 1. 创建ServerSocket对象,绑定监听端口 2. 通过accept()方法监听客户端请求 3. 连接建立后,通过输入流读取客户端发送的请求信息 4. 通过输出流向客户端发送响应信息 5. 关闭相关资源 ~~~java public class Server { /** * 基于TCP协议的Socket通信,实现用户登陆 服务器端 * * @param args */ public static void main(String[] args) { try { // 1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口 ServerSocket serverSocket = new ServerSocket(8886); // 2.调用accept()方法开始监听,等待客户端的连接 Socket socket = serverSocket.accept(); // 3.获器输入流,并读取客户端信息 InputStream is = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String info = null; while ((info = br.readLine()) != null) { // 循环读取客户端的信息 System.out.println("我是服务器,客户端说:" + info); } socket.shutdownInput();// 关闭输入流 //4.获取输出流,响应客户端的请求 OutputStream os = socket.getOutputStream(); PrintWriter pw = new PrintWriter(os); pw.write("欢迎你"); pw.flush();//调用flush()方法将缓冲输出 // 5.关闭资源 os.close(); pw.close(); br.close(); isr.close(); is.close(); socket.close(); serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } } ~~~ --- ### 客户端 1. 创建Socket对象,指名需要连接的服务器的地址和端口号 2. 连接建立后,通过输出流向服务器端发送请求信息 3. 通过输入流获取服务器响应的信息 4. 关闭相关资源 ~~~java public class Client { /**客户端 * @param args */ public static void main(String[] args) { try { //1、创建客户端Socket,指定服务器地址和端口 Socket socket = new Socket("localhost",8886); //2、获取输出流,向服务端发送信息 OutputStream os = socket.getOutputStream();//字节输出流 PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流 pw.write("用户名:admin;密码:123"); pw.flush(); socket.shutdownOutput();//关闭输出流 //3.获取输入流,并读取服务器端的响应信息 InputStream is= socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String info = null; while ((info = br.readLine()) != null) { // 循环读取客户端的信息 System.out.println("我是客户端,服务端说:" + info); } //4.关闭资源 br.close(); is.close(); pw.close(); os.close(); socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } ~~~