(2.) 第三步:编写IoHandler
package com.dxz.minademo2;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TCPClientHandler extends IoHandlerAdapter {
private final static Logger LOGGER = LoggerFactory.getLogger(TCPClientHandler.class);
private final String values;
public TCPClientHandler(String values) {
this.values = values;
}
@Override
public void sessionOpened(IoSession session) {
session.write(values);
}
}
注册IoHandler:
然后我们运行MyClient,你会发现MyServer 输出如下语句:
The message received is [你好!]
The message received is [大家好!]
我们看到服务端是按照收到两条消息输出的,因为我们用的编是以换行符判断数据是否读取完毕的。
3. 介绍Mina的TCP的主要接口:
通过上面的两个示例,你应该对Mina 如何编写TCP/IP 协议栈的网络通信有了一些感性的认识。
(1.)IoService:
这个接口是服务端IoAcceptor、客户端IoConnector 的抽象,提供IO 服务和管理IoSession的功能,它有如下几个常用的方法:
A. TransportMetadata getTransportMetadata():
这个方法获取传输方式的元数据描述信息,也就是底层到底基于什么的实现,譬如:nio、apr 等。
B. void addListener(IoServiceListener listener):
servlet事件器的注册和调用过程都是由web容器自动完成的,当发生被对象被创建,修改,销毁等事件时,web容器将调用与之相关的servlet事件器对象的相应方法(所到的对象如果在创建、修改、销毁事件触发的时候就会调用这些器这就相当于面向事件编程的概念),用户在这些方法中编写的事件处理代码(相当于js中的事件响应)即被执行。概念:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类.。
frm_package.c:148: warning: dereferencing 'void *' pointer。 c# copy code private void setdblogonforreport(connectioninfo connectioninfo){}在此方法内,从 crystalreportviewer 类的 logoninfo 属性获取 tablelogoninfos 实例。c(23) : warning 047: '==' : 'void *' differs in levels of indirection from 'int ' e:\vc\c 语言练习\c 接口\strcpy 动态链接库的调用\ado transterstrcpy。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-93147-5.html
简直各种感动各种正力量好不好
这个世界超级军事强国
肯定质量杠杠的