//-----------------------------------------------------------------------Server
package demo2;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSessionConfig;
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 SendMsgServer {
public static void main(String[] args) throws
IOException {
NioSocketAcceptor acceptor =
new NioSocketAcceptor();
acceptor.getFilterChain().addLast(
"encode",
new
ProtocolCodecFilter(new TextLineCodecFactory(Charset
.forName("UTF-8"),
LineDelimiter.WINDOWS.getValue(),
LineDelimiter.WINDOWS.getValue())));
IoSessionConfig
isf=acceptor.getSessionConfig();
isf.setIdleTime(IdleStatus.BOTH_IDLE,
10);
acceptor.setHandler(new
SendMsgServerHandler());
acceptor.bind(new
InetSocketAddress(3305));
}
}
//--------------------------------------------------------------Server
handler
package demo2;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
public class SendMsgServerHandler extends IoHandlerAdapter{
@Override
public void exceptionCaught(IoSession session,
Throwable cause)
throws
Exception {
// TODO Auto-generated method
stub
super.exceptionCaught(session,
cause);
}
@Override
public void messageReceived(IoSession session,
Object message)
throws
Exception {
// TODO Auto-generated method
stub
super.messageReceived(session,
message);
System.out.println("服务器接收到的消息是:"+message.toString());
session.write("发磅成功");
}
@Override
public void messageSent(IoSession session, Object
message) throws Exception {
// TODO Auto-generated method
stub
super.messageSent(session,
message);
session.close();
}
@Override
public void sessionClosed(IoSession session)
throws Exception {
// TODO Auto-generated method
stub
super.sessionClosed(session);
}
@Override
public void sessionCreated(IoSession session)
throws Exception {
// TODO Auto-generated method
stub
super.sessionCreated(session);
}
@Override
public void sessionIdle(IoSession session,
IdleStatus status)
throws
Exception {
// TODO Auto-generated method
stub
super.sessionIdle(session,
status);
}
@Override
public void sessionOpened(IoSession session)
throws Exception {
// TODO Auto-generated method
stub
super.sessionOpened(session);
}
}
//
----------------------------------------------------------------Client
package demo2;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import org.apache.mina.core.future.ConnectFuture;
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.NioSocketConnector;
public class SendMsgClient {
public static void main(String[] args) {
NioSocketConnector connector =
new NioSocketConnector();
connector.getFilterChain().addLast(
"encode",
new
ProtocolCodecFilter(new TextLineCodecFactory(Charset
.forName("UTF-8"),
LineDelimiter.WINDOWS.getValue(),
LineDelimiter.WINDOWS.getValue())));
connector.getSessionConfig().setReadBufferSize(2048);
connector.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE,
10);
connector.setConnectTimeoutMillis(30000);
connector.setHandler(new
SendMsgClientHandler());
ConnectFuture cf=
connector.connect(new InetSocketAddress("127.0.0.1",3305));
cf.awaitUninterruptibly();
Message message=new
Message();
message.setSendPhone("13511111111");
message.setReceivePhone("13522222222");
message.setContent("这是客户端发送过来的一个消息");
// String
sendPhone="13511111111";
// String
receivePhone="13522222222";
// String
msg="这是客户端发送过来的一个消息";
cf.getSession().write(message);
System.out.println("11111111111");
cf.getSession().getCloseFuture().awaitUninterruptibly();
System.out.println("2222222222222222");
connector.dispose();
System.out.println("3333333333333333");
}
}
//---------------------------------------Client Handler
package demo2;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
public class SendMsgClientHandler extends IoHandlerAdapter {
@Override
public void exceptionCaught(IoSession session,
Throwable cause)
throws
Exception {
// TODO Auto-generated method
stub
super.exceptionCaught(session,
cause);
}
@Override
public void messageReceived(IoSession session,
Object message)
throws
Exception {
// TODO Auto-generated method
stub
super.messageReceived(session,
message);
System.out.println("接收到的消息是:"+message.toString());
}
@Override
public void messageSent(IoSession session, Object
message) throws Exception {
// TODO Auto-generated method
stub
super.messageSent(session,
message);
System.out.println("向服务器发送消息成功!!!!");
}
@Override
public void sessionClosed(IoSession session)
throws Exception {
// TODO Auto-generated method
stub
super.sessionClosed(session);
}
@Override
public void sessionCreated(IoSession session)
throws Exception {
// TODO Auto-generated method
stub
super.sessionCreated(session);
}
@Override
public void sessionIdle(IoSession session,
IdleStatus status)
throws
Exception {
// TODO Auto-generated method
stub
super.sessionIdle(session,
status);
}
@Override
public void sessionOpened(IoSession session)
throws Exception {
// TODO Auto-generated method
stub
super.sessionOpened(session);
}
}
//发送的消息包装类
package demo2;
public class Message {
private String sendPhone;
private String
receivePhone;
private String content;
public String getSendPhone() {
return sendPhone;
}
public void setSendPhone(String sendPhone)
{
this.sendPhone =
sendPhone;
}
public String getReceivePhone() {
return receivePhone;
}
public void setReceivePhone(String receivePhone)
{
this.receivePhone =
receivePhone;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
@Override
public String toString() {
// TODO Auto-generated method
stub
return
sendPhone+","+receivePhone+","+content;
}
}