import com.sun.swing.internal.plaf.metal.resources.metal;
import com.sun.swing.internal.plaf.metal.resources.metal_sv;
import org.apache.mina.core.RuntimeIoException;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.SocketConnector;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
import java.net.ConnectException;
import java.net.InetSocketAddress;
public class MinaClient {
public SocketConnector socketConnector;
public static final int DEFAULT_CONNECT_TIMEOUT = 5;
public static final String HOST = ”192.168.0.100″;
public static final int PORT = 1100;
public static IoSession ioSession;
public MinaClient() {
init();
}
public void init() {
socketConnector = new NioSocketConnector();
//
socketConnector.getSessionConfig().setKeepAlive(true);
socketConnector.setConnectTimeoutMillis(DEFAULT_CONNECT_TIMEOUT * 1000);
socketConnector.getFilterChain().addLast(“codec”, new ProtocolCodecFilter(new TextLineCodecFactory()));
ClientIoHandler ioHandler = new ClientIoHandler();
socketConnector.setHandler(ioHandler);
InetSocketAddress addr = new InetSocketAddress(HOST, PORT);
ConnectFuture cf = socketConnector.connect(addr);
cf.awaitUninterruptibly();
ioSession = cf.getSession();
}
public void sendMessage(final String msg) {
try {
if (ioSession != null) {
if (ioSession.isConnected()) {//
ioSession.write(msg);//
System.out.println(“send message ” + msg);
} else {
reconnect();
}
}
} catch (RuntimeIoException e) {
e.printStackTrace();
}
}
private void reconnect() {
InetSocketAddress addr = new InetSocketAddress(HOST, PORT);
ConnectFuture cf = socketConnector.connect(addr);
cf.awaitUninterruptibly();
ioSession = cf.getSession();
}
public static void main(String[] args) throws InterruptedException {
MinaClient clent = new MinaClient();
for (int i = 0; i < 99999; i++) {
Thread.sleep(2000);
System.err.println(i);
clent.sendMessage(“Hello World ” + i);
}
clent.getSocketConnector().dispose();
}
public SocketConnector getSocketConnector() {
return socketConnector;
}
public void setSocketConnector(SocketConnector socketConnector) {
this.socketConnector = socketConnector;
}
}
class ClientIoHandler extends IoHandlerAdapter {
private void releaseSession(IoSession session) throws Exception {
System.out.println(“releaseSession”);
if (session.isConnected()) {
session.close(true);
}
}
@Override
public void sessionOpened(IoSession session) throws Exception {
System.out.println(“sessionOpened”);
}
@Override
public void sessionClosed(IoSession session) throws Exception {
System.out.println(“sessionClosed-c”);
}
@Override
public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
System.out.println(“sessionIdle”);
try {
releaseSession(session);
} catch (RuntimeIoException e) {
}
}
@Override
public void messageReceived(IoSession session, Object message) throws Exception {
System.out.println(“Receive Server message ” + message);
}
@Override
public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
System.out.println(“exceptionCaught”);
cause.printStackTrace();
releaseSession(session);
}
@Override
public void messageSent(IoSession session, Object message) throws Exception {
System.out.println(“messageSent”);
super.messageSent(session, message);
}
}
import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.SocketAcceptor;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
import java.net.InetSocketAddress;
public class MinaServer {
public void init() throws Exception{
SocketAcceptor acceptor = new NioSocketAcceptor(Runtime.getRuntime().availableProcessors() + 1);
//设置解析器
DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
chain.addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory()));
acceptor.setHandler(new BexnHandler());
acceptor.bind(new InetSocketAddress(1100));
acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE,5);
}
public MinaServer() throws Exception {
init();
}
public static void main(String[] args) throws Exception {
new MinaServer();
System.out.println("Server start");
}
}
class BexnHandler extends IoHandlerAdapter {
@Override
public void messageReceived(IoSession session, Object message) throws Exception {
System.out.println("messageReceived " + message);
super.messageReceived(session, message);
session.write("messageReceived "+message);
}
@Override
public void exceptionCaught(IoSession session, Throwable cause)
throws Exception {
if (session.isConnected()) {
session.close(true);
}
}
@Override
public void messageSent(IoSession session, Object message) throws Exception {
// session.close();
}
@Override
public void sessionClosed(IoSession session) throws Exception {
super.sessionClosed(session);
System.out.println("sessionClosed-s");
}
@Override
public void sessionCreated(IoSession session) throws Exception {
}
@Override
public void sessionIdle(IoSession session, IdleStatus status)
throws Exception {
session.close(true);
}
@Override
public void sessionOpened(IoSession session) throws Exception {
super.sessionOpened(session);
}
}
项目管理工具— IT Manager
这是一个开源的项目管理工具,具备组织架构管理,权限管理,任务管理,测试管理,日报,周报,绩效考核,还包括配套的代码生成器:https://gitee.com/vvliker-jo/it-manager