解决方案 »
- SSH整合的时候出现一个问题.延时加载true OR false?
- hibernate和spring整合报错
- 高分寻找连接 sql server2000 的 jdbc 驱动程序!
- org.hibernate.exception.GenericJDBCException: could not load an entity: [mypack.Customer#3]
- 关于树形结构表的Mybatis映射
- 各位高手请回答:能否实现,从不同的机子,不通的数据库里提取数据到jsp页面.请指点,谢谢各位!
- 帮忙搞定链接sql数据库问题
- 在windows2000下,如何将jboss加入到系统服务里面
- 新手初问:java桌面应用程序在windows2000是否要做什么配置?急用
- 系统上传图片提示写文件失败,可以读取查看图片。请高手帮忙分析原因。
- snmp4j获取目标服务器cpu信息的问题
- 多线程问题,点运行没反应,求指点
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);
}}
[/code]
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);
}
}