`
- 浏览:
20480 次
- 性别:
- 来自:
广州
-
- package com.rose.common.frame.mina;
-
-
import java.io.BufferedInputStream;
-
import java.io.BufferedOutputStream;
-
import java.io.IOException;
-
import java.io.InputStream;
-
import java.io.OutputStream;
-
-
-
-
-
-
-
-
public class IoStreamThreadWork extends Thread{
-
public static final int BUFFER_SIZE = 1024*2;
-
-
private BufferedInputStream bis;
-
private BufferedOutputStream bos;
-
-
-
public BufferedInputStream getBis() {
-
return bis;
- }
-
-
public void setBis(BufferedInputStream bis) {
-
this.bis = bis;
- }
-
-
public BufferedOutputStream getBos() {
-
return bos;
- }
-
-
public void setBos(BufferedOutputStream bos) {
-
this.bos = bos;
- }
-
-
public IoStreamThreadWork(InputStream in, OutputStream os){
-
bis = new BufferedInputStream(in);
-
bos = new BufferedOutputStream(os);
- }
-
public synchronized void run() {
-
byte[] bufferByte = new byte[BUFFER_SIZE];
-
int tempData = 0;
-
try {
-
while((tempData = bis.read(bufferByte)) != -1 ){
-
bos.write(bufferByte, 0, tempData);
- }
-
try {
- bos.flush();
-
} catch (IOException e) {
- e.printStackTrace();
- }
-
} catch (IOException e) {
- e.printStackTrace();
-
}finally{
-
try {
- bos.close();
- bis.close();
-
} catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
服务端:
- package com.rose.common.frame.mina;
-
-
import java.io.File;
-
import java.io.FileNotFoundException;
-
import java.io.FileOutputStream;
-
import java.io.IOException;
-
import java.io.InputStream;
-
import java.io.OutputStream;
-
import java.net.InetSocketAddress;
-
import java.util.concurrent.ArrayBlockingQueue;
-
import java.util.concurrent.ThreadPoolExecutor;
-
import java.util.concurrent.TimeUnit;
-
-
import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
-
import org.apache.mina.core.session.IoSession;
-
import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
-
import org.apache.mina.filter.logging.LoggingFilter;
-
import org.apache.mina.handler.stream.StreamIoHandler;
-
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
-
-
-
-
-
-
public class MinaFileServer extends StreamIoHandler{
-
public static final int PORT = 8888;
-
@Override
-
public void sessionOpened(IoSession session) {
-
System.out.println("客户端连接了:"+session.getRemoteAddress());
-
super.sessionOpened(session);
- }
-
-
protected void processStreamIo(IoSession session, InputStream in,OutputStream out) {
-
-
-
ThreadPoolExecutor threadPool = new ThreadPoolExecutor(3, 6, 3,TimeUnit.SECONDS,
-
-
new ArrayBlockingQueue<Runnable>(3),
-
-
new ThreadPoolExecutor.DiscardOldestPolicy());
-
FileOutputStream fos = null;
-
-
File receiveFile = new File("e:\\test.pdf");
-
-
try {
-
fos = new FileOutputStream(receiveFile);
-
} catch (FileNotFoundException e1) {
- e1.printStackTrace();
- }
-
-
threadPool.execute(new IoStreamThreadWork(in,fos));
-
-
- }
-
-
public void createServerStream(){
-
-
NioSocketAcceptor acceptor = new NioSocketAcceptor();
-
- DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
-
-
-
-
ObjectSerializationCodecFactory factory = new ObjectSerializationCodecFactory();
-
-
factory.setDecoderMaxObjectSize(Integer.MAX_VALUE);
- factory.setEncoderMaxObjectSize(Integer.MAX_VALUE);
-
chain.addLast("logging", new LoggingFilter());
-
-
acceptor.setHandler(new MinaFileServer());
-
InetSocketAddress inetSocketAddress = null;
-
try {
-
inetSocketAddress = new InetSocketAddress(8888);
- acceptor.bind(inetSocketAddress);
-
} catch (IOException e) {
-
- e.printStackTrace();
- }
-
System.out.println("文件服务器已经开启:"+8888);
- }
-
public static void main(String[] args) {
-
MinaFileServer server = new MinaFileServer();
- server.createServerStream();
- }
- }
客户端:
- package com.rose.common.frame.mina;
-
-
import java.io.File;
-
import java.io.FileInputStream;
-
import java.io.FileNotFoundException;
-
import java.io.InputStream;
-
import java.io.OutputStream;
-
import java.net.InetSocketAddress;
-
-
import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
-
import org.apache.mina.core.future.ConnectFuture;
-
import org.apache.mina.core.session.IoSession;
-
import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
-
import org.apache.mina.filter.logging.LoggingFilter;
-
import org.apache.mina.handler.stream.StreamIoHandler;
-
import org.apache.mina.transport.socket.nio.NioSocketConnector;
-
-
-
-
-
-
-
public class MinaFileClient extends StreamIoHandler{
- IoSession session;
-
public void setSession(IoSession session) {
-
this.session = session;
- }
-
public IoSession getSession() {
-
return session;
- }
-
@Override
-
protected void processStreamIo(IoSession session, InputStream in,
- OutputStream out) {
-
-
File sendFile = new File("F:\\ttt.pdf");
-
FileInputStream fis = null;
-
try {
-
fis = new FileInputStream(sendFile);
-
-
} catch (FileNotFoundException e) {
- e.printStackTrace();
- }
-
-
-
new IoStreamThreadWork(fis,out).start();
-
return;
- }
-
-
public void createClienStream(){
-
int port = 8888;
-
String local = "127.0.0.1";
-
-
NioSocketConnector connector = new NioSocketConnector();
- DefaultIoFilterChainBuilder chain = connector.getFilterChain();
-
ObjectSerializationCodecFactory factory = new ObjectSerializationCodecFactory();
- factory.setDecoderMaxObjectSize(Integer.MAX_VALUE);
- factory.setEncoderMaxObjectSize(Integer.MAX_VALUE);
-
chain.addLast("logging", new LoggingFilter());
-
connector.setHandler(new MinaFileClient());
-
ConnectFuture connectFuture = connector.connect(new InetSocketAddress(local,port));
-
connectFuture.awaitUninterruptibly();
-
-
-
-
- }
-
public static void main(String[] args) {
-
MinaFileClient client = new MinaFileClient();
- client.createClienStream();
- }
- }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在本文中,我们将深入探讨Mina的高级使用,特别是在文件图片传送、文件发送、XML和JSON报文处理方面的实践。 1. **Mina的高级使用** Mina的核心在于其异步事件驱动的模型,这使得它在处理大量并发连接时表现出色。...
综上所述,Mina文件及字符串传输是一个典型的网络通信应用案例,它展示了如何使用Mina框架高效地处理文件请求和响应,以及如何在客户端和服务端之间进行安全的数据传输。通过学习和掌握这些知识,开发者可以构建出...
本案例将深入探讨如何使用Mina作为服务端,结合Socket客户端实现文件的传输。 一、Apache Mina框架介绍 Apache Mina,全称为“Minimalist Application Networking Abstraction”,是一个提供了统一的API来处理多种...
**描述解读:**"用一个监听既可以传文件又可以传文本" 这里的描述表明我们将构建一个监听器,该监听器能够同时处理文件和文本数据的发送与接收。这意味着我们需要设计一个灵活的协议,能够在同一连接上区分不同类型...
标题中的"Mina文件及字符串传输"指的是使用Apache Mina框架进行数据交互的过程,包括发送和接收字符串请求以及传输文件。这一过程通常涉及到网络编程中的TCP/IP协议,因为Mina支持基于TCP的传输层通信。 首先,让...
本文将围绕"MINA上传文件和文件名"这一主题,深入探讨MINA的核心特性、文件上传的实现机制以及如何处理文件名。 MINA的核心特性包括非阻塞I/O、事件驱动的架构、多线程模型和丰富的缓冲区管理。非阻塞I/O使得MINA...
3. **数据传输**: 使用NIO的`SocketChannel`,客户端将编码后的数据发送到服务器端的`ServerSocketChannel`。 4. **数据解码**: 服务器端的`FileDecoder`接收数据,根据预定义的协议解码为文件块,并存储在临时位置...
4. **数据传输**: 文件数据被分块并通过网络传输,Mina的Filter链在此过程中进行数据的编码和解码。同时,Handler监听Read事件,逐块接收文件内容。 5. **保存文件**: 服务器端Handler接收到每个数据块后,将其累积...
在压缩包子文件的文件名“M2M”中,通常M2M代表Machine-to-Machine通信,这可能是指使用MINA来实现设备之间的数据交换,例如在物联网(IoT)环境中。MINA的灵活性和可扩展性使得它适合于处理各种设备间的通信需求,...
在标题和描述中提到的“mina传输对象的示例”指的是如何在Mina框架下处理和传输自定义的数据对象。Mina允许开发者通过事件驱动和异步I/O模型来高效地构建网络服务。 Mina的核心组件包括: 1. **Session**: 表示...
**基于Mina的开源文件传输软件** Mina(Minimum Asynchronous Network)是一个高度可扩展的、高性能的网络应用开发框架,主要用于构建网络服务,如FTP(文件传输协议)服务器。这个开源项目允许开发者使用Java NIO...
在"实现了Mina框架简单的换行符编解码的服务器客户端通信"这一描述中,我们可以理解到项目使用了Mina提供的编码器和解码器机制。换行符编码器通常用于将包含换行符的数据转换为网络传输友好的格式,因为网络协议中...
同时,MINA支持多种协议,如TCP、UDP、SSL/TLS等,使得它在各种网络通信场景下都具有广泛的应用性,如聊天服务器、文件传输服务、在线游戏服务器等。 总的来说,这个压缩包为初学者提供了一套完整的MINA学习资源,...
3. **过滤器链**:MINA 使用过滤器链的概念,数据在传输过程中会经过一系列过滤器进行预处理和后处理,这为添加日志、编码解码、安全性检查等功能提供了便利。 4. **协议支持**:MINA 支持多种协议,如HTTP、FTP、...
在提供的文件"minaConnect"中,可能包含了使用Mina实现上述功能的相关代码示例和配置。通过分析这些文件,可以更具体地了解如何在实际项目中应用Mina的连接、心跳和断线重连机制。不过,具体的实现细节和优化策略需...
在使用过程中,你可以利用Mina提供的API来建立服务器,处理客户端连接,定义协议处理逻辑,以及进行数据传输。 总的来说,这个"mina.zip"是一个方便开发和测试Apache Mina应用的资源包,包含了运行Mina所需的所有...
Mina(Java Multithreaded Network Application Framework)是一个用Java编写的网络应用框架,它提供了高度可扩展性和性能,适用于多种网络协议,包括TCP和UDP。Mina为开发者提供了一种抽象层,简化了网络编程的复杂...
为了优化性能,可以考虑对数据进行压缩,如使用Gzip压缩,减少网络传输的数据量。此外,为了保证图片数据的完整性和一致性,可以采用TCP协议,利用其可靠的数据传输特性。 在实际应用中,可能还需要处理更多复杂...
3. **Mina Transport**:实现了各种网络传输层,如TCP、UDP、本地文件系统以及NIO(非阻塞I/O)。 4. **Mina Extras**:可能包含一些额外的模块或工具,用于简化特定任务,如SSL/TLS支持、协议解析等。 5. **...
要将Spring Boot与Mina整合,首先我们需要在`pom.xml`文件中添加Mina和Spring Boot的相关依赖。接着,在Spring Boot应用中创建一个Mina服务器,这通常涉及以下步骤: - **创建Mina配置类**:定义Mina服务器的配置,...