学习MINA之一

来源:互联网 发布:gy手机自动关机软件 编辑:程序博客网 时间:2024/06/05 21:52

很久没有写一系列的文章了,今天开始吧。

先说一下本次要实现的协议,从简单到复杂吧。

 

 

head

contentLength

content

2个字节

4个字节

n个字节

 

 

解释一下:

 

head:消息的标记位,比如消息中前两个字节为“0xAB”"0xCD",这种消息才会处理。

contentLengthcontent内容的长度

content:具体的消息内容

 

简单的设计一下:

 

首先,要有一个对象来承载这个消息的数据

其次,需要一个Encoder来把对象转换为消息流

再次,需要一个Decoder来把小溪流转换为对象

再次,一个CodecFactory

最后,ClientServer

 

OK,先看一下大概。

 

org.jansel.mina.message

-------------------------------encoder

-----------------------------------------MessageEncoder

-------------------------------decoder

-----------------------------------------MessageDecoder

-------------------------------message

-----------------------------------------Message

-------------------------------factory

-----------------------------------------MessageCodecFactory

-------------------------------MessageClient

-------------------------------MessageServer

 

先看Message的设计

      从消息的格式来看,head部分是固定部分,contentLength部分由content的长度决定,所以Message对象其实承载的就是一个字符串即可,如下:

public class Message {

 

    private String content;

 

    public String getContent() {

        return content;

    }

 

    public void setContent(String content) {

        this.content = content;

    }

 

    public int getContentLength() throws UnsupportedEncodingException

    {

        return content.getBytes("UTF-8").length;

    }

}

 

原创粉丝点击