web.xml中的filterMina的底层依赖的主要是Ja(23)

电脑杂谈  发布时间:2019-03-27 09:08:04  来源:网络整理

你会看到Server 端的控制台输出如下信息:

%%%%%%%%%%%%%%%%%%%%%%%%%%%init
%%%%%%%%%%%%%%%%%%%%%%%%%%%onPreAdd
%%%%%%%%%%%%%%%%%%%%%%%%%%%onPostAdd
%%%%%%%%%%%%%%%%%%%%%%%%%%%sessionCreated
server session created
%%%%%%%%%%%%%%%%%%%%%%%%%%%sessionOpened
server session Opened
-%%%%%%%%%%%%%%%%%%%%%%%%%%%messageReceived
The message received is [你好!Hello World!]
-----------------messageReceived
The message received is [com.dxz.minademo3.SmsObject@2b884014]

(6-2.)复杂的:

下面我们讲解一下如何在中保存状态变量,也就是真正的实现上面所说的Context。

我们假设这样一种情况,有两条短信:

M sip:wap.fetion.com.cn SIP-C/2.0

S: 1580101xxxx

R: 1889020xxxx

L: 21

Hello World!

M sip:wap.fetion.com.cn SIP-C/2.0

S: 1580101xxxx

R: 1889020xxxx

L: 21

Hello World!

他们按照上面的颜色标识发送,也就是说红色部分、蓝色部分、绿色部分分别发送(调用三次IoSession.write()方法),那么如果你还用上面的CmccSipcDecoder,将无法工作,因为第一次数据流(红色部分)发送过取时,数据是不完整的,无法解析出一条短信息,当二次数据流(蓝色部分)发送过去时,已经可以解析出第一条短信息了,但是第二条短信还是不完整的,需要等待第三次数据流(绿色部分)的发送。注意:由于模拟数据发送的规模性问题很麻烦,所以这里采用了这种极端的例子说明问题,虽不具有典型性,但很能说明问题,这就足够了,所以不要追究这种发送消息是否在真实环境中存在,更不要追究其合理性。

CmccSispcDecoder 类改为如下的写法:

[java]view plaincopy

publicclassCmccSipcDecoderextendsCumulativeProtocolDecoder{

privatefinalCharsetcharset;

method method = extranotification.getclass().getdeclaredmethod("setmessagecount", int.class)。strpackagename = getclass().getpackage().getname()。

"context");

publicCmccSipcDecoder(Charsetcharset){

this.charset=charset;

}

@Override

protectedbooleandoDecode(IoSessionsession,IoBufferin,

ProtocolDecoderOutputout)throwsException{

Contextctx=getContext(session);

CharsetDecodercd=charset.newDecoder();


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-93147-23.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...