问题描述
- 怎么样调用mina的messageReceived中得到的返回值
-
public void messageReceived(IoSession session, Object packet) throws Exception { System.out.println("Received == " + packet.toString()); }
mina中有个messageReceived方法,我已经从客户端把消息发送给服务器,也成功收到了服务器返回的数据,但是我现在想在另一个类中用这个返回的数据packet,怎么能调用它呢?
求懂的人告诉一下方法,编程新人不是很懂,卡在这不知道怎么继续了。
解决方案
究竟是给客户端用还是给服务端用啊。被你说糊涂了。收到消息就直接可以抛给业务handler了啊。mina,netty多是成熟的框架啊
解决方案二:
ConnectFuture future = getConnector().connect(new InetSocketAddress(PORT));
future.awaitUninterruptibly(5, TimeUnit.SECONDS);
session = future.getSession();
session.getConfig().setUseReadOperation(true);
Object message = session.read().awaitUninterruptibly().getMessage();
byte[] bytes = (byte[]) message;
System.out.println(new String(bytes));
handle其实就是一个拦截器,你可以直接new IoHandlerAdapter(),不做任何处理都可以。
session.read().awaitUninterruptibly()就是等待服务端返回消息。
其实就是把读消息变成同步阻塞的了。其实大多数客户端都是阻塞的情况。
时间: 2024-09-14 12:36:18