【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("连接创建成功rn");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 + "rn");writer2Client.flush();}} catch (IOException e) {throw new MyRunTimeException("打开端口socket失败,端口=" + PORT + ", 异常信息=" + e.getMessage());} finally {try {if (server != null) {server.close();}} catch (Exception e) {}}}}
【2】socket客户端【java即时通讯功能实现】/** * @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 .NETSocketAddress("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 + "rn");printWriter.flush();}} catch (Exception e) {throw new MyRunTimeException("客户端通讯失败, 异常信息=" + e.getMessage());}}}
【3】通讯效果
文章插图
推荐阅读
- 开发工具Java JDK的安装与配置 jdk安装
- 如何和别人核对妻子的电话号码(查别人通讯录号码的诀窍)
- Java基于分治算法实现的棋盘覆盖问题示例
- 开发者|互联网巨头开发使用什么编程语言?C++不可少、Java边缘化
- java快速排序
- 两种 java 向 yarn 提交 spark 任务命令的区别
- 通讯邮编是什么井冈山 通讯邮编是什么
- 架构师之RX响应式编程——RxJava2.0操作符原理
- Java开发学习----AOP切入点表达式及五种通知类型解析
- 深度解析Java静态代理与动态代理模式的实现