//包含四个类,客户端两个+服务器两个
//LoginClient.java,LoginClientHandler.java,LoginServer.java,LoginServerHandler.java
//login客户端代码
package com.mina.day3;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import org.apache.log4j.Logger;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.core.service.IoConnector;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.LineDelimiter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
public class LoginClient {
private static Logger logger = Logger.getLogger(LoginClient.class);
private static String HOST = "127.0.0.1";
private static int PORT = 3005;
public static void main(String[] args) {
IoConnector connector = new NioSocketConnector();
connector.setConnectTimeoutMillis(3000);
connector.getFilterChain().addLast("codec",
new ProtocolCodecFilter(
new TextLineCodecFactory(Charset.forName("UTF-8"),
LineDelimiter.WINDOWS.getValue(),
LineDelimiter.WINDOWS.getValue())
));
connector.setHandler(new LoginClientHandler());
IoSession session = null;
try {
ConnectFuture future = connector.connect(new InetSocketAddress(HOST, PORT));
future.awaitUninterruptibly();
session = future.getSession();
session.write("admin,3");
} catch (Exception e) {
logger.error("connecting error...", e);
}
session.getCloseFuture().awaitUninterruptibly();
connector.dispose();
}
}
//客户端处理器代码
package com.mina.day3;
import org.apache.log4j.Logger;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
public class LoginClientHandler extends IoHandlerAdapter {
private static Logger logger = Logger.getLogger(LoginClientHandler.class);
@Override
public void messageReceived(IoSession session, Object message)
throws Exception {
// message from server
String msgFServer = message.toString();
logger.info("client received msg = " + msgFServer);
}
}
//服务器端LoginServer.java
package com.mina.day3;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import org.apache.log4j.Logger;
import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.LineDelimiter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
public class LoginServer {
private static Logger logger = Logger.getLogger(LoginServer.class);
private static int PORT = 3005;
public static void main(String[] args) {
IoAcceptor acceptor = null;
try {
acceptor = new NioSocketAcceptor();
acceptor.getFilterChain().addLast("codec",
new ProtocolCodecFilter(
new TextLineCodecFactory(Charset.forName("UTF-8"),
LineDelimiter.WINDOWS.getValue(),
LineDelimiter.WINDOWS.getValue())
));
acceptor.getSessionConfig().setReadBufferSize(2048);
acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
acceptor.setHandler(new LoginServerHandler());
acceptor.bind(new InetSocketAddress(PORT));
logger.info("server startup ok,port = "+PORT);
} catch (Exception e) {
logger.error("server startup error...", e);
e.printStackTrace();
}
}
}
//服务器处理器代码
package com.mina.day3;
import org.apache.log4j.Logger;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
public class LoginServerHandler extends IoHandlerAdapter {
public static Logger logger = Logger.getLogger(LoginServerHandler.class);
@Override
public void messageReceived(IoSession session, Object message)
throws Exception {
String resultMsg = message.toString();
logger.info("server received msg = "+resultMsg);
if ("bye".equals(resultMsg)) {
session.close(true);
}
//简单模拟业务逻辑处理
String[] userInfo = resultMsg.split(",");
String username = userInfo[0];
String password = userInfo[1];
if (username.equals("admin") && password.equals("3")) {
session.write("login success...");
} else {
session.write("login error...");
}
}
@Override
public void messageSent(IoSession session, Object message) throws Exception {
// longlived connection
logger.info("message sent success...");
}
}
分享到:
相关推荐
mina的入门例子
这个网上一个牛人写的mina入门知识, 里面有基础介绍和项目开发步骤。 入门还是不错的,写的挺详细。 我把项目也加进来了。
mina 基础的入门实例,使用maven+jdk1.7进行构建,使用客户端直接可以进行测试
ApacheMina入门 ApacheMina入门 ApacheMina入门 ApacheMina入门 ApacheMina入门
最近做rfid读写,C#和java都用udp不用厂家的动态库,udp自己写也简单,但是试了一下Apache mina ,接收的不是string,二十byte[] 数组,简单实现了UDP,网上也有例子,但是不是我要的。可用。
mina例子,服务端和客户端,MinaTimeServer是启动服务端,然后运行MinaClient就能看到结果了
mina-2.0.0-M6.zip源码+例子,学些mina必备哦
mina 入门 教程
NULL 博文链接:https://mina-java.iteye.com/blog/1115429
mina服务端工程例子包括相关源码,实现了socket 的nio
Apache的高性能Java网络框架的源码分享大家,本人也在学习中
Mina2.0快速入门与源码剖析(个人经验文档)
Apache MINA是一个网络应用程序框架,本实例在android下 进行串口通讯的例子
NULL 博文链接:https://royal2xiaose.iteye.com/blog/1558322
mina是一种高效的互联网网络通信架构,此资料为入门基础。
Mina官网的时间服务例子,附有运行说明,完全能够运行。
pache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(然,也可以提供JAVA 对象的序列化服务、虚拟机管道通信服务等),Mina 可以帮助我们快速开发高性能、高扩展性...
mina的使用初步入门mina的使用初步入门mina的使用初步入门