用Socket实现服务器端与客户端之间通信
需求:键盘输入文字使服务器端与客户端可以实现文字通信。
使用的是TCP协议。
TCP协议
客户端 创建Socket连接服务端(指定ip地址,端口号)通过ip地址找对应的服务器调用Socket的getInputStream()和getOutputStream()方法获取和服务端相连的IO流输入流可以读取服务端输出流写出的数据输出流可以写出数据到服务端的输入流 服务端 创建ServerSocket(需要指定端口号)调用ServerSocket的accept()方法接收一个客户端请求,得到一个Socket调用Socket的getInputStream()和getOutputStream()方法获取和客户端相连的IO流输入流可以读取客户端输出流写出的数据输出流可以写出数据到客户端的输入流步骤
新建Server类:
package wct.classDemo;import java.io.*;import .ServerSocket;import .Socket;import java.util.Scanner;/*** @author Elvira* @date /10/16 19:03* @description*/public class Server {public static void main(String[] args) throws Exception {ServerSocket server = new ServerSocket(9009);Scanner sc = new Scanner(System.in);while (true) {System.out.println("Server:");Socket socket = server.accept();InputStream is = socket.getInputStream();OutputStream os = socket.getOutputStream();BufferedReader br =new BufferedReader(new InputStreamReader(is));PrintWriter pw = new PrintWriter(os, true);String line;while ((line = br.readLine()) != null) {System.out.println(line);pw.println("客服:" + sc.nextLine());}socket.close();}}}
运行结果:
新建Client类:
package wct.classDemo;import java.io.*;import .Socket;import java.util.Scanner;/*** @author Elvira* @date /10/16 19:03* @description*/public class Client {public static void main(String[] args) throws Exception {Scanner sc = new Scanner(System.in);Socket socket = new Socket("127.0.0.1", 9009);InputStream is = socket.getInputStream();OutputStream os = socket.getOutputStream();PrintWriter pw = new PrintWriter(os, true);BufferedReader br =new BufferedReader(new InputStreamReader(is));System.out.println("Client:");while (true) {String line = sc.nextLine();pw.println("吴:" + line);if ("exit".equals(line)) {break;}System.out.println(br.readLine());}socket.close();}}
运行结果:
总结
学习了通信,看着控制台一来一回的消息,感觉很神奇,很开心。