mina的服务器与客户端的例子
来源:互联网 发布:tensorflow 1.4 编辑:程序博客网 时间:2024/05/01 17:36
1、服务器端
public class MinaServer {
public static final int PORT=1234;
private static Logger log = Logger.getLogger(MinaServer.class);
public static void main(String[] args) {
try{
//创建一个非阻塞的server
IoAcceptor acceptor = new NioSocketAcceptor();
//log过滤器
acceptor.getFilterChain().addLast("logger", new LoggingFilter());
//编码解码过滤器
acceptor.getFilterChain().addLast( "codec",
new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));
//设置通道占用时间
acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
//业务逻辑对象
acceptor.setHandler(new MinaServerHandler());
//端口邦定
acceptor.bind(new InetSocketAddress(PORT));
log.info("MESSAGE:SERVER MESSAGE:FRONT END SERVER IS LAUNCH,LISTENER PORT:" + PORT);
} catch (IOException e) {
e.printStackTrace();
}
}
}
2、服务器的业务逻辑处理
public class MinaServerHandler extends IoHandlerAdapter {
private final Logger logger =Logger.getLogger(MinaServerHandler.class);
boolean sendFlag=false;
private static String sendMsg="Hello Client,server receive message...";
@Override
public void sessionOpened(IoSession session) {
logger.info("==================================MESSAGE:SERVICE START=============================");
session.setAttribute("Values: ");
}
@Override
public void messageReceived(IoSession session, Object message) {
sendFlag=true;
logger.info("Message received in the server..");
logger.info("Message is: " + message.toString());
if(sendFlag){
try {
// messageSent(session,MinaClient02.getMsgLength(sendMsg).getBytes());
messageSent(session,sendMsg);
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Override
public void sessionIdle(IoSession session, IdleStatus status) {
logger.info("Disconnecting the idle.");
session.close(true);
}
@Override
public void messageSent(IoSession session, Object message) throws Exception {
logger.info("Message Sent....");
session.write(message);
session.close(true);
}
@Override
public void exceptionCaught(IoSession session, Throwable cause) {
session.close(true);
}
@Override
public void sessionClosed(IoSession session) throws Exception {
logger.info("==================================MESSAGE:SERVICE END=============================");
}
}
3、客户端
public class MinaClient {
private static String sendMsg="respMsg=中华人民共和国&respTime=20121105093922&merId=123456789012345&merAbbr=CUPDATA IC TEST3&orderNumber=IC13520795375152872&qid=013746&orderAmount=000000000001&orderCurrency=156&settleAmount";
private static final int PORT = 1234;
public static void main(String[] args) {
//客户端对象
IoConnector connector = new NioSocketConnector();
//可读缓存的大小
connector.getSessionConfig().setReadBufferSize(2048);
//log过滤器
connector.getFilterChain().addLast("logger", new LoggingFilter());
//编码解码过滤器
connector.getFilterChain().addLast("codec",
new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));
//业务逻辑处理对象
connector.setHandler(new MinaClientHandler());
//建立连接
ConnectFuture future = connector.connect(new InetSocketAddress("localhost", PORT));
future.awaitUninterruptibly();
if (!future.isConnected()) {
return;
}
//允许读操作
future.getSession().getConfig().setUseReadOperation(true);
//写消息
future.getSession().write(getSendMsgLen(sendMsg));
//等待操作的完成
future.getSession().getCloseFuture().awaitUninterruptibly();
System.out.println("After Writing");
//连接关闭
connector.dispose();
}
}
4、客户端的业务逻辑处理
public class MinaClientHandler extends IoHandlerAdapter {
private final Logger logger = Logger.getLogger(getClass());
private boolean finished;
private String values;
public MinaClientHandler() {
}
public MinaClientHandler(String values) {
this.values = values;
}
public boolean isFinished() {
return finished;
}
@Override
public void messageReceived(IoSession session, Object message) {
logger.info("Message received in the client..");
logger.info("Message is: " + message.toString());
}
@Override
public void exceptionCaught(IoSession session, Throwable cause) {
session.close(true);
}
}
希望对像我一样的出学有所帮助
- mina的服务器与客户端的例子
- 很好很好的select模型的客户端与服务器例子
- 初学mina的例子
- mina的简单例子
- socket编程:服务器与客户端简单交互的例子
- delphi(客户端) socket 与 PHP_socket(服务器) 通信的例子
- centos7 最简单的git服务器与客户端使用例子
- 使用MINA框架的转发服务器和客户端
- mina 客户端无法得到服务器的返回值
- Android 使用Mina的Nio实现客户端服务器通信
- Apache MINA 的一个例子
- 整理网上MINA的例子
- Mina框架的简单例子
- Unity 客户端连接服务器的例子
- 客户端访问服务器的一个例子
- Netty客户端和服务器简单的例子
- ios客户端 mina服务器
- mina服务器、客户端
- 浅谈Android Vold
- H.264中的NAL技术
- [gotoac]二分图最大匹配hungary & 二分图最佳完美匹配KM(邻接表&邻接矩阵) beta1
- osg学习示例之遇到问题五雪效编译无错调试中断
- CFileDialog文件选择对话框 和dwFlag风格解释
- mina的服务器与客户端的例子
- 大数据(big data)究竟是什么?
- 英语练习146 Don't be shy
- <h1>读取配置文件失败</h1>这通常意味着文件中有语法错误,请检查下面显示出的错误。<br /><br /><iframe src="show_config_errors.php" />
- vs2010环境下mfc+ffmpeg+opencv读取任意格式视频的播放器
- 测试CheckList
- [基础]编程小问题和Tips
- 为什么用java.math.BigDecimal
- 在Ubuntu上构建MiniDLNA服务器