快捷搜索:  汽车  科技

java实现websocket实时聊天(Java实现WebSocket即时通讯)

java实现websocket实时聊天(Java实现WebSocket即时通讯)4.注意事项发送消息的时候,一定要加上回车和换行符(\r\n),不然 scanner.nextLine() 无法识别到一行的结束,就会一直阻塞。

利用java socket实现简单即时通讯的方法。

1.socket服务器

/** * @Description 即时消息服务器 * @author xiao tang * @version 1.0.0 * @createTime 2022年01月23日 */ public class IMsocketServer { private static int PORT = 13; public static void main(String[] args) { ServerSocket server = null; try { // 开启端口 server = new ServerSocket(PORT); System.out.println("服务器已启动"); // 与客户端建立socket连接 Socket socket = server.accept(); System.out.println("客户端请求,创建连接成功"); // 写出器 PrintWriter writer2Client = new PrintWriter(socket.getOutputStream()); writer2Client.write("连接创建成功\r\n"); writer2Client.flush(); // 客户端读入器 Scanner scanner4Client = new Scanner(socket.getInputStream()); // 控制台读入器 Scanner scanner4Console = new Scanner(System.in); // 等待客户端输入 while(true) { // 读取客户端消息并打印 String msg4Client = scanner4Client.nextLine(); System.out.println("客户端:" msg4Client); System.out.print("服务端:"); // 获取控制台输入数据并发送到客户端 String msg4Console = scanner4Console.nextLine(); writer2Client.write(msg4Console "\r\n"); writer2Client.flush(); } } catch (IOException e) { throw new MyRunTimeException("打开端口socket失败,端口=" PORT " 异常信息=" e.getMessage()); } finally { try { if (server != null) { server.close(); } } catch (Exception e) { } } } }

2.socket客户端

/** * @Description 即时消息客户端 * @author xiao tang * @version 1.0.0 * @createTime 2022年01月23日 */ public class IMSocketClient { private static int PORT = 13; public static void main(String[] args) { try (Socket socket = new Socket()) { // 与服务器端建立socket连接 socket.connect(new InetSocketAddress("localhost" PORT) 3000); // 新建读取器,写出器 Scanner scanner4Server = new Scanner(socket.getInputStream()); PrintWriter printWriter = new PrintWriter(socket.getOutputStream()); // 控制台读入器 Scanner scanner4Console = new Scanner(System.in); System.out.println("连接成功,等待服务器响应"); // 等待服务器控制台输入 while(true) { // 读取服务器响应并打印 String msg4Server = scanner4Server.next(); System.out.println("服务器:" msg4Server); System.out.printf("\n客户端:"); // 客户端读取控制台输入,并发送到服务器 String msg4Console = scanner4Console.nextLine(); printWriter.write(msg4Console "\r\n"); printWriter.flush(); } } catch (Exception e) { throw new MyRunTimeException("客户端通讯失败 异常信息=" e.getMessage()); } } }

3.通讯效果

java实现websocket实时聊天(Java实现WebSocket即时通讯)(1)

4.注意事项

发送消息的时候,一定要加上回车和换行符(\r\n),不然 scanner.nextLine() 无法识别到一行的结束,就会一直阻塞。

猜您喜欢: