设为首页 加入收藏

TOP

Socket网络编程-Mina 实例(一)
2014-11-24 01:19:58 来源: 作者: 【 】 浏览:10
Tags:Socket 网络编程 -Mina 实例

第一步: Mina服务端 Server 的创建


public class MinaServer {
public static final int PORT = 1989;

private static final Logger logger = Logger.getLogger(MinaServer.class);
public static void main(String[] args) {
IoAcceptor ioAcceptor = null;
try {
//创建一个非阻塞 的Server端Socket
ioAcceptor = new NioSocketAcceptor();
//
ioAcceptor.getFilterChain().addLast(
"codec",
new ProtocolCodecFilter(new TextLineCodecFactory(Charset
.forName("UTF-8"),LineDelimiter.WINDOWS.getValue(),LineDelimiter.WINDOWS.getValue())));

//设置读取数据的缓冲区大小
ioAcceptor.getSessionConfig().setReadBufferSize(4096);
//设置10秒没有任何操作进入空闲状态

ioAcceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);

//设置业务逻辑处理程序
ioAcceptor.setHandler(new DefaultServerHander());

ioAcceptor.bind(new InetSocketAddress(PORT));

logger.info("在端口" + PORT + "启动Mina监听程序成功");

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}
}


第二部: 创建Mina服务端处理程序


public class MinaServer {
public static final int PORT = 1989;

private static final Logger logger = Logger.getLogger(MinaServer.class);
public static void main(String[] args) {
IoAcceptor ioAcceptor = null;
try {
//创建一个非阻塞 的Server端Socket
ioAcceptor = new NioSocketAcceptor();
//
ioAcceptor.getFilterChain().addLast(
"codec",
new ProtocolCodecFilter(new TextLineCodecFactory(Charset
.forName("UTF-8"),LineDelimiter.WINDOWS.getValue(),LineDelimiter.WINDOWS.getValue())));

//设置读取数据的缓冲区大小
ioAcceptor.getSessionConfig().setReadBufferSize(4096);
//设置10秒没有任何操作进入空闲状态

ioAcceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);

//设置业务逻辑处理程序
ioAcceptor.setHandler(new DefaultServerHander());

ioAcceptor.bind(new InetSocketAddress(PORT));

logger.info("在端口" + PORT + "启动Mina监听程序成功");

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


第三部:客户端连接程序代码


public class MinaClient {
private static final int PORT = 1989;
private static final String Host = "localhost";
public static void main(String[] args) {

// 创建一个非阻塞的客户端连接
IoConnector connector = new NioSocketConnector();

connector.getFilterChain().addLast(
"codec",
new ProtocolCodecFilter(new TextLineCodecFactory(Charset
.forName("UTF-8"),LineDelimiter.WINDOWS.getValue(),LineDelimiter.WINDOWS.getValue())));


connector.setHandler(new MinaClientHander());

ConnectFuture connectFuture = connector.connect(new InetSocketAddress(Host, PORT));

connectFuture.awaitUninterruptibly(); //等待连接创建完成

IoSession session = connectFuture.getSession();

session.write("高江涛");

session.getCloseFuture().awaitUninterruptibly(); //等待连接断开
connector.dispose();

}
}


第四步: 客户端处理程序


public class MinaClientHander extends IoHandlerAdapter {
@Override
public void exceptionCaught(IoSession session, Throwable cause)
throws Exception {
// TODO Auto-generated method stub
super.exceptionCaught(session, cause);
}
@Override
public void messageReceived(IoSession session, Object message)
throws Exception {
// TODO Auto-generated method stub
super.messageReceived(session, message);
}
@Override
public void messageSent(IoSession session, Object message) throws Exception {
// TODO Auto-generated method stub
super.messageSent(session, message);
}
@Override
public void sessionClosed(I

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇利用Android传感器完成 Android语.. 下一篇Linux内核态与用户态进程通信方法..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: