# socket-core **Repository Path**: Verlif/socket-core ## Basic Information - **Project Name**: socket-core - **Description**: 非常简单的socket通信使用组件 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-06-06 - **Last Updated**: 2023-04-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SocketCore **已被 [socket-point](https://github.com/Verlif/socket-point) 代替,推荐使用 socket-point** **已被 [socket-point](https://github.com/Verlif/socket-point) 代替,推荐使用 socket-point** **已被 [socket-point](https://github.com/Verlif/socket-point) 代替,推荐使用 socket-point** 基于Socket的简单服务端与客户端通讯模块 核心: * 一个Server,用来接收客户端数据。 * 一个Client,用来连接服务端。 ## 使用 ### Server ```java // 使用新的服务端配置新建服务端对象 Server server = new Server( new ServerConfig() // 设定服务端监听端口 .port(16508) // 设定处理器数量与每个处理器管理的客户端连接数 .max(5).tied(5)); server.setHandler((client, message) -> { if (message.equalsIgnoreCase("close")) { try { client.close(); } catch (IOException e) { e.printStackTrace(); } } else if (message.equalsIgnoreCase("close me")) { client.sendMessage("close\n"); } else { System.out.println(message); } }); // 服务端初始化 server.init(); // 服务端开始接受客户端连接请求 server.start(); ``` *注:handler在后面有说明* ### Client ```java Client client = new Client(new ClientConfig()); client.setReceiveHandler((client1, message) -> { if (message.equalsIgnoreCase("close")) { client1.close(); } else { System.out.println(message); } }); // 客户端连接 if (client.connect()) { // 获取控制台输入监听 Scanner scanner = new Scanner(System.in); while(client.isConnected()){ // 将控制台输入发送给服务端 client.sendMessage(scanner.nextLine() + "\n"); } } else { System.out.println("fail!!!"); } ``` *注:handler在后面有说明* ## 添加 ### 添加Jitpack仓库源 [![Release](https://jitpack.io/v/Verlif/socket-core.svg)](https://jitpack.io/#Verlif/socket-core) #### maven ```xml jitpack.io https://jitpack.io ``` #### Gradle ```text allprojects { repositories { maven { url 'https://jitpack.io' } } } ``` ### 添加依赖 #### maven ```xml com.github.Verlif socket-core last-version ``` #### Gradle ```text dependencies { implementation 'com.github.Verlif:socket-core:last-version' } ``` ------ ## 通讯信息处理 本模块的信息是通过字符串的方式进行传递。 服务端使用`SocketHandler`接口进行客户端数据处理。 客户端使用`ReceiveHandler`接口进行服务端消息处理。 两端在新建对象时,其中的配置类中请添加自实现的消息处理接口。 `SocketHandler`接口 ```java public interface SocketHandler { /** * 当服务器连接数到达最大值时的拒绝策略 * * @param socket 被拒绝的连接 * @throws IOException 当套接字被关闭时抛出异常 */ default void onRejected(Socket socket) throws IOException { PrintStream ps = new PrintStream(socket.getOutputStream()); ps.println("the server is overload!"); ps.flush(); ps.close(); socket.close(); } /** * 当接收到数据时回调 * * @param client 客户端套接字 * @param message 接收到的数据 */ void receive(ClientHolder.ClientHandler client, String message); } ``` ------ `ReceiveHandler` ```java public interface ReceiveHandler { /** * 当接收到数据时回调 * * @param client 客户端对象 * @param message 接收到的数据 */ void receive(Client client, String message); } ```