java MinaClient

package com.MinaClient;


import java.net.InetSocketAddress;
import java.nio.charset.Charset;


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;


public class MyClient {


public static final int DEFAULT_CONNECT_TIMEOUT = 5;
public static final String HOST = "127.0.0.1";
public static final int PORT = 9999;
public static SocketConnector connector = null;


public MyClient() throws Exception {
init();
}


public static void init() throws Exception {
connector = new NioSocketConnector();
connector.setConnectTimeoutMillis(DEFAULT_CONNECT_TIMEOUT);
connector.getFilterChain().addLast( "ecode", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("utf-8"))));
connector.setHandler(new MyClientHandler());
connector.getSessionConfig().setReceiveBufferSize(1024);
connector.getSessionConfig().setReadBufferSize(1024);
}


public void sentMessage(final Object msg) {
InetSocketAddress addr = new InetSocketAddress(HOST, PORT);
ConnectFuture cf = connector.connect(addr);
cf.awaitUninterruptibly();
cf.getSession().write(msg);
System.out.println("发送消息(客户端)-------------" + msg);
}


public static void main(String[] args) throws Exception {
MyClient clent = new MyClient();
for (int i = 0; i < 1; i++) {
System.err.println(i);
clent.sentMessage("dddddddddddd");
}
}


public SocketConnector getSocketConnector() {
return connector;
}


@SuppressWarnings("static-access")
public void setSocketConnector(SocketConnector socketConnector) {
this.connector = socketConnector;
}
}


class MyClientHandler 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("开启会话(客户端)-------------");
}


@Override
public void sessionClosed(IoSession session) throws Exception {
System.out.println("关闭会话(客户端)-------------");
}


@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("接收服务器传送的消息(客户端)-------------" + message);
super.messageReceived(session, message);
releaseSession(session);
}


@Override
public void exceptionCaught(IoSession session, Throwable cause)
throws Exception {
System.out.println("出现异常(客户端)-------------");
cause.printStackTrace();
releaseSession(session);
}


@Override
public void messageSent(IoSession session, Object message) throws Exception {
System.out.println("发送消息(客户端)-------------");
super.messageSent(session, message);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值