codecamp

服务端(Server)示例

服务端初始化参数:

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

# 服务端配置列表,多个服务端名称间用'|'分隔,默认为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注解来表示一个服务端,该注解有如下参数:

参数说明
name设置服务的名称,Serv框架将会根据该参数指定的名称加载对应的服务端参数配置,默认为default;
codec设置编解码器,默认为NioStringCodec;
implClass服务端实现类,默认为NioServer;

基于TCP协议的服务端,需要继承NioServerListener监听器类,支持监听如下事件:

事件说明
onSessionAccepted客户端成功接入服务端后触发该事件;
onBeforeSessionClosed客户端会话被关闭之前触发该事件;
onAfterSessionClosed客户端会话被关闭之后触发该事件;
onMessageReceived收到客户端发送的消息时触发该事件;
onExceptionCaught出现异常时触发该事件;

基于UDP协议的服务端,需要继承NioUdpListener监听器类,支持监听如下事件:

事件说明
onSessionReady客户端与服务端连接已建立并准备就绪时触发该事件;
onMessageReceived收到客户端发送的消息时触发该事件;
onExceptionCaught出现异常时触发该事件;
示例代码
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);
    }
}
服务概述
客户端(Client)示例
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }