Mina 客户端向机器发送指令

秋分中的雨 2017-08-26 12:02:47
Mina架构的客户端向机器发送指令,获取机器返回信息。指令为单条指令,是没有问题,怎么实现发送多条指令,分别获取每条指令返回的信息。代码如下:

MyClientHandler 代码:
package com.hanvon.sdk.mina.client;

import java.util.logging.Logger;

import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;

import Com.FirstSolver.Splash.FaceIdProtocolCodecFactory;

public class MyClientHandler extends IoHandlerAdapter {

private Logger logger = Logger.getLogger(this.getClass().getName());

public String port;

public MyClientHandler(String port){
this.port = port;
}
public void sessionOpened(IoSession session) throws Exception {
FaceIdProtocolCodecFactory.setEncoderKey(session, port);
FaceIdProtocolCodecFactory.setDecoderKey(session, port);
}

public void messageReceived(IoSession session, Object message) throws Exception {
// TODO Auto-generated method stub
String messageStr = message.toString();
logger.info("receive a message is : " + messageStr);
System.out.println("receive a message is : " + messageStr);
}

public void messageSent(IoSession session, Object message) throws Exception {
logger.info("客户端发了一个信息:" + message.toString());
}
public String getPort() {
return port;
}
public void setPort(String port) {
this.port = port;
}

}
SimpleMinaClient代码:
package com.hanvon.sdk.mina.client;

import java.net.InetSocketAddress;

import org.apache.mina.core.future.CloseFuture;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.logging.LogLevel;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.SocketConnector;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
import Com.FirstSolver.Splash.FaceIdProtocolCodecFactory;

public class SimpleMinaClient {
public SocketConnector connector = null;
public ConnectFuture future;
public IoSession session = null;

SimpleMinaClient(){

}
boolean connect(){
try{
connector = new NioSocketConnector();
connector.setConnectTimeoutMillis(3000);
connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(new FaceIdProtocolCodecFactory("GBK", false, false)));
LoggingFilter log = new LoggingFilter();
log.setMessageReceivedLogLevel(LogLevel.INFO);
connector.getFilterChain().addLast("logger", log);
connector.setHandler(new MyClientHandler(9905));

future = connector.connect(new InetSocketAddress("192.168.1.18", 9922));
future.awaitUninterruptibly();
session = future.getSession();
return true;
}catch(Exception e){
e.printStackTrace();
return false;
}

}


public void setAttribute(Object key , Object value){
session.setAttribute(key, value);
}


void sentMsg(String message){
session.write(message);
}


boolean close(){
CloseFuture future = session.getCloseFuture();
future.awaitUninterruptibly(1000);
connector.dispose();
return true;
}

public SocketConnector getConnector() {
return connector;
}


public IoSession getSession() {
return session;
}


/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SimpleMinaClient client = new SimpleMinaClient();
if(client.connect()){
client.sentMsg("GetEmployee(id=\"123\")");
client.close();
}

}
}
...全文
193 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

50,544

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧