서버 예시
서버 초기화 매개변수:
#------------------------------------- # 服务模块--服务端初始化参数 #------------------------------------- # 服务端配置列表,多个服务端名称间用'|'分隔,默认为default ymp.configs.serv.server.name_list=default # 服务名称, 默认为default ymp.configs.serv.server.default.name=default # 绑定IP地址, 默认为0.0.0.0 ymp.configs.serv.server.default.host=0.0.0.0 # 监听端口号, 默认为8281 ymp.configs.serv.server.default.port=8281 # 编解码字符集, 默认为UTF-8 ymp.configs.serv.server.default.charset=UTF-8 # 缓冲区大小, 默认为4096 ymp.configs.serv.server.default.buffer_size=4096 # NIO选择器数量, 默认为1 ymp.configs.serv.server.default.selector_count=1 # 执行线程池大小, 默认为10 ymp.configs.serv.server.default.executor_count=10 # 自定义参数, 可选 ymp.configs.serv.server.default.params.xxx=xxx
리스너에 클래스 선언 @Server
주석을 구현하여 서버를 나타냅니다. 주석에는 다음 매개변수가 있습니다.
TCP 프로토콜 기반 서버는 NioServerListener를 상속해야 합니다. 클래스는 다음 이벤트 모니터링을 지원합니다.
UDP 프로토콜 기반 서버는 NioUdpListener 리스너 클래스를 상속해야 하며 다음 이벤트 모니터링을 지원해야 합니다.
샘플 코드
TCP 서버
// 采用默认配置的TCP服务端 @Server public class TcpServer extends NioServerListener { @Override public void onSessionAccepted(INioSession session) throws IOException { super.onSessionAccepted(session); } @Override public void onMessageReceived(Object message, INioSession session) throws IOException { super.onMessageReceived(message, session); // 输出接收到的消息 System.out.println("Message received: " + message); // 向客户端发送消息 session.send("Hi, guys!"); } @Override public void onAfterSessionClosed(INioSession session) throws IOException { super.onAfterSessionClosed(session); } @Override public void onBeforeSessionClosed(INioSession session) throws IOException { super.onBeforeSessionClosed(session); } }
UDP 서버
// 采用默认配置的UDP服务端,其中implClass参数必须指定为NioUpdServer.class @Server(implClass = NioUdpServer.class, codec = TextLineCodec.class) public class UdpServer extends NioUdpListener { public Object onSessionReady() throws IOException { // 此接口方法的返回值将作为消息发送至客户端 return null; } public Object onMessageReceived(InetSocketAddress sourceAddr, Object message) throws IOException { // 输出接收到的消息 System.out.println("Message received: " + message); // 此接口方法的返回值将作为消息发送至客户端 return message; } public void onExceptionCaught(InetSocketAddress sourceAddr, Throwable e) throws IOException { System.out.println(sourceAddr + "--->" + e); } }