Mina介绍
Mina可以用于快速的开发基于网络通信的应用,特别是在开发手机端的游戏应用时,使用的较为普遍。本文简单介绍了一个用Mina搭建的一个简易讨论组,通过该应用可以对Mina的基本用法用途有个大致的了解。
界面效果
界面元素不多,使用了两个AWT组件。
客户端1:
客户端2:
服务端日志:
核心代码
服务端Handler
/**
* <服务端消息Handler>
*
* @author liping.action@gmail.com
* @version V1.0
*/
extends IoHandlerAdapter {
private MsgQueue msgQueueReceived;
private MsgQueue msgQueueSent;
10:
public MsgQueue getMsgQueueReceived() {
return msgQueueReceived;
13: }
14:
void setMsgQueueReceived(MsgQueue msgQueueReceived) {
this.msgQueueReceived = msgQueueReceived;
17: }
18:
public MsgQueue getMsgQueueSent() {
return msgQueueSent;
21: }
22:
void setMsgQueueSent(MsgQueue msgQueueSent) {
this.msgQueueSent = msgQueueSent;
25: }
26:
static {
28: PropertyConfigurator.configure(ClassLoader
));
30: }
class);
32:
33: @Override
void exceptionCaught(IoSession session, Throwable cause)
throws Exception {
36: logger.error(cause.toString());
37: }
38:
39: @Override
void messageReceived(IoSession session, Object message)
throws Exception {
42: Msg msg = (Msg) message;
+ msg.getContent());
45: Collection<IoSession> sessions = session.getService()
46: .getManagedSessions().values();
47: msg.setId(session.getRemoteAddress().toString());
for (IoSession ioSession : sessions) {
49: ioSession.write(msg);
50: }
51: }
52:
53: @Override
throws Exception {
55: logger.info(Constant.MESSAGE_SENT);
56: }
57:
58: @Override
throws Exception {
60: logger.info(Constant.SESSION_CLOSED);
61: }
62:
63: @Override
throws Exception {
65: logger.info(Constant.SESSION_CREATED);
66: }
67:
68: @Override
void sessionIdle(IoSession session, IdleStatus status)
throws Exception {
71: logger.info(Constant.SESSION_IDLE);
72: }
73:
74: @Override
throws Exception {
76: logger.info(Constant.SESSION_OPENED);
78: + session.getRemoteAddress());
79: }
80:
81: }