MINA接收数据。
MINA有几个方法,由事件触发。如messageReceived。当接收消息时候执行之。这点与Twisted有点像。
下面是一个简单接收打印的demo。
package server.test;
import java.nio.ByteBuffer;
import java.util.Date;
import org.apache.log4j.Logger;
import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
import server.log.LoggerFactory;
import server.tcp.receive.ChannelBuffer;
public class ProjectHandle extends IoHandlerAdapter {
private Logger logger = LoggerFactory.initLogger();
@Override
public void exceptionCaught(IoSession session, Throwable cause) {
// System.out.println("session closed from " +
// session.getRemoteAddress());
logger.error("session closed from " + session.getRemoteAddress());
session.close(true);
}
@Override
public void sessionOpened(IoSession session) throws Exception {
Date date = new Date();
System.out.println("the session has opened for "
+ session.getRemoteAddress() + "/" + date.toString());
}
@Override
public void sessionClosed(IoSession session) throws Exception {
session.close(true);
Date date = new Date();
System.out.println("session closed from " + session.getRemoteAddress()
+ "/" + date.toString());
}
@Override
public void messageReceived(IoSession session, Object msg) throws Exception {
IoBuffer buf = (IoBuffer) msg;
ByteBuffer bf = buf.buf();
byte[] tmpBuffer = new byte[bf.limit()];
bf.get(tmpBuffer);
processPacket(session, tmpBuffer);
}
private void processPacket(IoSession session, byte[] newData) {
if (newData.length == 0) {
session.removeAttribute("buffer");
session.close(true);
} else {
Object buffer = session.getAttribute("buffer");
ChannelBuffer cBuffer = new ChannelBuffer();
if (buffer != null) {
cBuffer = (ChannelBuffer) buffer;
}
// cBuffer.setBuffer(newData,session);
for (byte b : newData) {
System.out.print(b);
}
System.out.println();
session.removeAttribute("buffer");
session.setAttribute("buffer", cBuffer);
}
}
}
完整源码包如下。
telnet 127.0.0.1 9090即可。
分享到:
相关推荐
3. **IoHandler**:IoHandler是处理网络事件的主要接口,如连接建立、数据接收、连接关闭等。你可以实现这个接口来定义你的业务逻辑。 4. **ProtocolCodec**:为了处理不同协议的数据编码和解码,Mina提供了...
标题中的“给予mina协议进行大数据传输”指的是一种基于Java的网络通信框架——Apache MINA(Model-View-Controller for Network Applications)。MINA是Apache软件基金会的一个项目,它提供了一个高度可扩展和高...
为了测试,你可以使用串口调试工具(如RealTerm、CoolTerm等)连接到同一串口,发送和接收数据。 以上就是Spring Boot整合Mina实现串口通信的基本步骤。这个例子中,我们创建了一个可直接运行的Spring Boot项目,...
3. **ProtocolHandler**:协议处理器是处理特定协议的类,负责将接收到的数据转换为业务逻辑可以理解的对象,同时也将应用程序的响应转换为网络数据发送出去。 接下来,我们来构建我们的“HelloWorld”应用。首先,...
这样,Mina就能方便地处理结构化数据的网络传输。 6. **minaImage压缩包子文件** "minaImage"这个文件可能是示例代码、配置文件或者是关于图片传输的示例项目。通过研究这个压缩包,我们可以更具体地了解如何在...
在SpringBoot集成Mina的场景下,我们可以利用Mina提供的API来读写串口数据,实现设备间的双向通信。 "Mina"框架是Apache组织开发的一个网络通信库,它提供了一套高级抽象层,允许开发者使用类似Java NIO的API进行...
标题中的"mina客户端简单代码示例"意味着我们将探讨如何使用Mina框架编写一个基础的客户端程序,该程序能够连接到服务器并发送数据。描述指出,运行这个客户端程序(minaTestClient)会展示一个窗口,用户可以通过...
3. **定义处理器**:编写一个实现了`IoHandler`接口的类,处理接收到的数据和发送的数据。 4. **监听事件**:在处理器中,我们需要重写`sessionCreated()`、`messageReceived()`和`messageSent()`等方法,以响应...
- 测试代码:用于验证传输和接收数据的正确性。 总的来说,Apache Mina提供了强大的工具,帮助开发者构建高性能、可扩展的网络服务,同时允许他们专注于业务逻辑,而不是底层的网络通信细节。通过理解和实践“mina...
本文将深入探讨如何使用Mina库在Android客户端与Java服务器之间实现UDP(用户数据报协议)的数据交互。 UDP是一种无连接的、不可靠的传输层协议,相比TCP,它具有更低的延迟和更高的数据传输效率。然而,由于其不...
文件"MinaSocket"可能包含了实现上述功能的详细代码,包括服务端的Acceptor配置、过滤器设置、事件处理器编写,以及客户端的Socket连接、数据发送和接收等。通过阅读和理解这些代码,你可以更好地掌握Mina与Socket...
本项目名为“java-pb4mina”,其主要目标是为MINA服务器提供一个高效、简洁的编码和解码机制,利用Protocol Buffers的强大功能,将数据转化为二进制格式进行网络传输,再在接收端还原为原本的结构化数据。...
在mina框架中,编解码器(Codec)扮演着至关重要的角色,它负责将应用层的数据转换为网络传输的字节流,以及将接收到的字节流还原为应用程序可以理解的对象。对于初学者来说,理解和编写自定义的编解码器可能会遇到...
同时,客户端也可以使用Mina创建一个Socket连接,发送数据到服务器,并通过接收过滤器解析服务器返回的信息。 总结起来,Socket和Mina都是Java网络编程的重要工具,Socket更适合简单的、低级别的网络通信,而Mina则...
6. **处理WebSocket帧**:在messageReceived方法中,根据接收到的WebSocket帧类型进行相应的处理,如发送回文本或二进制数据,或者关闭连接。 7. **异常处理**:处理可能出现的异常,如网络中断、解析错误等,确保...
"Mina demo mina jar包"指的是使用Apache Mina框架创建的一个演示示例,这个示例展示了如何运行一个基本的服务端,能够接收客户端的数据并返回响应。 在Mina框架中,服务端通常会创建一个Acceptor,监听特定的端口...
2. **Session**: 通过Connector建立的会话,用于发送和接收数据。 3. **Request/Response**: 客户端封装流程申请请求,通过Session发送到服务端,然后接收服务端返回的响应,解析结果并进行相应的业务处理。 **...
IoSession是连接状态的容器,包含了会话中的所有信息,如远程地址、本地地址、缓冲区大小、已发送和接收的数据量等。 接下来,我们讨论"Mina心跳连接"。心跳机制是保持连接活性的重要手段,特别是在长连接中,防止...
6. **发送与接收**:通过`IoSession`对象发送和接收数据。 7. **关闭连接**:当不再需要连接时,优雅地关闭`IoSession`。 "MinaDemo"项目可能还包括自定义的编码器和解码器,例如`ProtocolEncoder`和`...