`
- 浏览:
20203 次
- 性别:
- 来自:
广州
-
- 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的高级使用,mina文件图片传送,
Mina文件及字符串传输 客户端发送字符串请求。服务端返回客户端请求的文件
用一个监听既可以传文件又可以传文本 mina 集成spring 传输文件和文本
minafileserver(Socket客户端+Mina服务端传文件)
用mina进行文件传输
Mina文件及字符串传输 客户端发送字符串请求。服务端返回客户端请求的文件
基于mina的开源ftp文件传输软件,有很好的NIO支持。
(4)Client发送功能ID,根据功能ID、Client_ID映射文件得到Client_ID,Client_ID配置到启动参数。 (5)连接失去时,更新角色和Session的Map。 test3.type1对应test3(1) test3.type2对应test3(2) 待做: ...
本资源提供了一套基于.NET的轻量...这些文件详细展示了如何使用C#构建一个支持TCP、UDP和串口等多种传输通道的网络程序框架,该框架能够帮助开发者快速地开发高伸缩性的应用程序,非常适合用于学习和参考C#项目的开发。
说明:该服务器框架试用于需要频繁修改数据库内容的游戏,没有使用数据库缓存,jdbc直接修改数据库内容。 申明: 我是个新手,有出错的地方莫怪哈,把源码发布出来更多的是想大伙帮忙改进下框架,改进的代码和新...
这个框架协议自己定义(即:底层已有字符串传输或Object传输,自己可以定义字符串会对象进行解析来制定自己的协议) 语音、图片等其实也是上传文件服务器再连个即时通信字符串通信而已; 注意:SSH-lib里有注意...
MINA提供了自己的视图层描述语言WXML和WXSS,以及基于JavaScript的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,可以让开发者可以方便的聚焦于数据与逻辑上。 文件结构 框架程序包含一个描述整体...
(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,...
使用MINA,FtpServer可以扩展到大量并发用户。 特性 1、100%纯Java,免费的开源可恢复FTP服务器 2、多平台支持和多线程设计。 3、用户虚拟目录,写入权限,空闲超时和上传/下载带宽限制支持。 4、匿名登录支持...
(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,...
在下的毕业设计,Android即时聊天系统,客户端,使用socket及其框架mina来传输即时信息(json),okhttp3来处理文件相关信息
在下的毕业设计,Android即时聊天系统,服务器端,使用socket及其框架mina来传输即时信息(json),okhttp3来处理文件相关信息 自动涨分 一分护体
Apache Camel 采用URI来描述各种组件,这样你可以很方便地与各种传输或者消息模块进行交互,其中包含的模块有 HTTP, ActiveMQ, JMS, JBI, SCA, MINA or CXF Bus API。 这些模块是采用可插拔的方式进行工作的。Apache...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...