서버 예시


서버 초기화 매개변수:

#-------------------------------------
# 服务模块--服务端初始化参数
#-------------------------------------

# 服务端配置列表,多个服务端名称间用'|'分隔,默认为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 주석을 구현하여 서버를 나타냅니다. 주석에는 다음 매개변수가 있습니다.

QQ截图20170207105055.png

TCP 프로토콜 기반 서버는 NioServerListener를 상속해야 합니다. 클래스는 다음 이벤트 모니터링을 지원합니다.


QQ截图20170207105121.png

UDP 프로토콜 기반 서버는 NioUdpListener 리스너 클래스를 상속해야 하며 다음 이벤트 모니터링을 지원해야 합니다.

QQ截图20170207105147.png
샘플 코드
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);
    }
}