`

MINA:开始接受数据

    博客分类:
  • NIO
阅读更多

         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即可。

分享到:
评论

相关推荐

    apache-mina-2.0.4.rar_apache mina_mina

    3. **IoHandler**:IoHandler是处理网络事件的主要接口,如连接建立、数据接收、连接关闭等。你可以实现这个接口来定义你的业务逻辑。 4. **ProtocolCodec**:为了处理不同协议的数据编码和解码,Mina提供了...

    给予mina 协议进行大数据传输

    标题中的“给予mina协议进行大数据传输”指的是一种基于Java的网络通信框架——Apache MINA(Model-View-Controller for Network Applications)。MINA是Apache软件基金会的一个项目,它提供了一个高度可扩展和高...

    spring boot 整合mina 串口

    为了测试,你可以使用串口调试工具(如RealTerm、CoolTerm等)连接到同一串口,发送和接收数据。 以上就是Spring Boot整合Mina实现串口通信的基本步骤。这个例子中,我们创建了一个可直接运行的Spring Boot项目,...

    Mina入门:mina版之HelloWorld

    3. **ProtocolHandler**:协议处理器是处理特定协议的类,负责将接收到的数据转换为业务逻辑可以理解的对象,同时也将应用程序的响应转换为网络数据发送出去。 接下来,我们来构建我们的“HelloWorld”应用。首先,...

    mina的高级使用,mina文件图片传送,mina发送文件,mina报文处理,mina发送xml和json

    这样,Mina就能方便地处理结构化数据的网络传输。 6. **minaImage压缩包子文件** "minaImage"这个文件可能是示例代码、配置文件或者是关于图片传输的示例项目。通过研究这个压缩包,我们可以更具体地了解如何在...

    Mina+Socket通信

    文件"MinaSocket"可能包含了实现上述功能的详细代码,包括服务端的Acceptor配置、过滤器设置、事件处理器编写,以及客户端的Socket连接、数据发送和接收等。通过阅读和理解这些代码,你可以更好地掌握Mina与Socket...

    springboot mina 串口对接

    在SpringBoot集成Mina的场景下,我们可以利用Mina提供的API来读写串口数据,实现设备间的双向通信。 "Mina"框架是Apache组织开发的一个网络通信库,它提供了一套高级抽象层,允许开发者使用类似Java NIO的API进行...

    mina客户端简单代码示例

    标题中的"mina客户端简单代码示例"意味着我们将探讨如何使用Mina框架编写一个基础的客户端程序,该程序能够连接到服务器并发送数据。描述指出,运行这个客户端程序(minaTestClient)会展示一个窗口,用户可以通过...

    mina串口通讯

    3. **定义处理器**:编写一个实现了`IoHandler`接口的类,处理接收到的数据和发送的数据。 4. **监听事件**:在处理器中,我们需要重写`sessionCreated()`、`messageReceived()`和`messageSent()`等方法,以响应...

    mina传输对象的示例

    - 测试代码:用于验证传输和接收数据的正确性。 总的来说,Apache Mina提供了强大的工具,帮助开发者构建高性能、可扩展的网络服务,同时允许他们专注于业务逻辑,而不是底层的网络通信细节。通过理解和实践“mina...

    Android Mina UDP数据交互

    本文将深入探讨如何使用Mina库在Android客户端与Java服务器之间实现UDP(用户数据报协议)的数据交互。 UDP是一种无连接的、不可靠的传输层协议,相比TCP,它具有更低的延迟和更高的数据传输效率。然而,由于其不...

    java-pb4mina:用于 minajava 服务器的协议缓冲区编码器解码器

    本项目名为“java-pb4mina”,其主要目标是为MINA服务器提供一个高效、简洁的编码和解码机制,利用Protocol Buffers的强大功能,将数据转化为二进制格式进行网络传输,再在接收端还原为原本的结构化数据。...

    mina自定义编解码器详解

    在mina框架中,编解码器(Codec)扮演着至关重要的角色,它负责将应用层的数据转换为网络传输的字节流,以及将接收到的字节流还原为应用程序可以理解的对象。对于初学者来说,理解和编写自定义的编解码器可能会遇到...

    websocket+java服务器(mina)

    6. **处理WebSocket帧**:在messageReceived方法中,根据接收到的WebSocket帧类型进行相应的处理,如发送回文本或二进制数据,或者关闭连接。 7. **异常处理**:处理可能出现的异常,如网络中断、解析错误等,确保...

    socket 与 mina 交互数据

    同时,客户端也可以使用Mina创建一个Socket连接,发送数据到服务器,并通过接收过滤器解析服务器返回的信息。 总结起来,Socket和Mina都是Java网络编程的重要工具,Socket更适合简单的、低级别的网络通信,而Mina则...

    mina demo mina jar包

    "Mina demo mina jar包"指的是使用Apache Mina框架创建的一个演示示例,这个示例展示了如何运行一个基本的服务端,能够接收客户端的数据并返回响应。 在Mina框架中,服务端通常会创建一个Acceptor,监听特定的端口...

    jbpm4.3 流程申请(mina通信)

    2. **Session**: 通过Connector建立的会话,用于发送和接收数据。 3. **Request/Response**: 客户端封装流程申请请求,通过Session发送到服务端,然后接收服务端返回的响应,解析结果并进行相应的业务处理。 **...

    mina连接 mina心跳连接 mina断线重连

    IoSession是连接状态的容器,包含了会话中的所有信息,如远程地址、本地地址、缓冲区大小、已发送和接收的数据量等。 接下来,我们讨论"Mina心跳连接"。心跳机制是保持连接活性的重要手段,特别是在长连接中,防止...

    minaDemo的实例

    6. **发送与接收**:通过`IoSession`对象发送和接收数据。 7. **关闭连接**:当不再需要连接时,优雅地关闭`IoSession`。 "MinaDemo"项目可能还包括自定义的编码器和解码器,例如`ProtocolEncoder`和`...

Global site tag (gtag.js) - Google Analytics