设为首页 加入收藏

TOP

Netty编解码技术和UDP实现(四)
2018-03-02 06:57:07 】 浏览:553
Tags:Netty 解码 技术 UDP 实现
eptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
        ctx.close();
    }


}



/**
 * Marshalling工厂
 *
 */
public final class MarshallingCodeCFactory {


    /**
    * 创建Jboss Marshalling解码器MarshallingDecoder
    *
    * @return MarshallingDecoder
    */
    public static MarshallingDecoder buildMarshallingDecoder() {
        // 首先通过Marshalling工具类的精通方法获取Marshalling实例对象 参数serial标识创建的是java序列化工厂对象。
        final MarshallerFactory marshallerFactory = Marshalling.getProvidedMarshallerFactory("serial");
        // 创建了MarshallingConfiguration对象,配置了版本号为5
        final MarshallingConfiguration configuration = new MarshallingConfiguration();
        configuration.setVersion(5);
        // 根据marshallerFactory和configuration创建provider
        UnmarshallerProvider provider = new DefaultUnmarshallerProvider(marshallerFactory, configuration);
        // 构建Netty的MarshallingDecoder对象,俩个参数分别为provider和单个消息序列化后的最大长度
        MarshallingDecoder decoder = new MarshallingDecoder(provider, 1024 * 1024 * 1);
        return decoder;
    }


    /**
    * 创建Jboss Marshalling编码器MarshallingEncoder
    *
    * @return MarshallingEncoder
    */
    public static MarshallingEncoder buildMarshallingEncoder() {
        final MarshallerFactory marshallerFactory = Marshalling.getProvidedMarshallerFactory("serial");
        final MarshallingConfiguration configuration = new MarshallingConfiguration();
        configuration.setVersion(5);
        MarshallerProvider provider = new DefaultMarshallerProvider(marshallerFactory, configuration);
        // 构建Netty的MarshallingEncoder对象,MarshallingEncoder用于实现序列化接口的POJO对象序列化为二进制数组
        MarshallingEncoder encoder = new MarshallingEncoder(provider);
        return encoder;
    }
}


public class Req implements Serializable {


    private static final long serialVersionUID = 1L;


    private String id;
    private String name;
    private String requestMessage;
    private byte[] attachment;


    public String getId() {
        return id;
    }


    public void setId(String id) {
        this.id = id;
    }


    public String getName() {
        return name;
    }


    public void setName(String name) {
        this.name = name;
    }


    public String getRequestMessage() {
        return requestMessage;
    }


    public void setRequestMessage(String requestMessage) {
        this.requestMessage = requestMessage;
    }


    public byte[] getAttachment() {
        return attachment;
    }


    public void setAttachment(byte[] at

首页 上一页 1 2 3 4 5 6 下一页 尾页 4/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++ 重载运算符简单例子 下一篇基于注解的简单SSH保存用户小案例

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目