mina転送画像
6605 ワード
package mina.example3;
import java.net.InetSocketAddress;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
/**
*
* @author dujinkai
*
*/
public class FileTransServer
{
public static void main(String[] args) throws Exception
{
ObjectSerializationCodecFactory objectSerializationCodecFactory = new ObjectSerializationCodecFactory();
objectSerializationCodecFactory.setDecoderMaxObjectSize(Integer.MAX_VALUE);
objectSerializationCodecFactory.setEncoderMaxObjectSize(Integer.MAX_VALUE);
NioSocketAcceptor accept=new NioSocketAcceptor();
accept.getFilterChain().addLast("codec",
new ProtocolCodecFilter(objectSerializationCodecFactory));
accept.getFilterChain().addLast("logging", new LoggingFilter());
accept.setHandler(new FileIOHandle());
accept.bind(new InetSocketAddress(8998));
}
}
package mina.example3;
import java.io.File;
import java.io.FileOutputStream;
import org.apache.mina.core.service.IoHandler;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
/**
*
* @author dujinkai
*
*/
public class FileIOHandle implements IoHandler
{
public void exceptionCaught(IoSession arg0, Throwable arg1)
throws Exception {
}
public void messageReceived(IoSession arg0, Object arg1) throws Exception
{
System.out.println("Receive Message:" + arg1);
FileUploadRequest fileUploadRequest = null;
if (arg1 instanceof FileUploadRequest )
{
fileUploadRequest = (FileUploadRequest)arg1;
String fileName = fileUploadRequest.getFileName();
byte [] bytes = fileUploadRequest.getBytes();
FileOutputStream fileOutputStream = new FileOutputStream(new File("D://")+fileName);
fileOutputStream.write(bytes);
fileOutputStream.flush();
fileOutputStream.close();
arg0.write("success");
}else if (arg1 instanceof String )
{
arg0.write("ok do not need to upload file");
}else
{
System.out.println("Receive Error Message");
arg0.write("error");
}
}
public void messageSent(IoSession arg0, Object arg1) throws Exception
{
System.out.println("Being to sent message :" + arg1);
}
public void sessionClosed(IoSession arg0) throws Exception {
System.out.println("Session close");
}
public void sessionCreated(IoSession arg0) throws Exception {
System.out.println("Session create");
}
public void sessionIdle(IoSession arg0, IdleStatus arg1) throws Exception {
}
public void sessionOpened(IoSession arg0) throws Exception
{
System.out.println("Session open");
}
}
package mina.example3;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.InetSocketAddress;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
/**
*
* @author dujinkai
*
*/
public class FileTransClient
{
public static void main(String[] args) throws Exception
{
ObjectSerializationCodecFactory objectSerializationCodecFactory = new ObjectSerializationCodecFactory();
objectSerializationCodecFactory.setDecoderMaxObjectSize(Integer.MAX_VALUE);
objectSerializationCodecFactory.setEncoderMaxObjectSize(Integer.MAX_VALUE);
//
NioSocketConnector connector = new NioSocketConnector();
connector.getFilterChain().addLast("codec",
new ProtocolCodecFilter(objectSerializationCodecFactory));
connector.getFilterChain().addLast("logging", new LoggingFilter());
connector.setHandler(new FileClientHandle());
connector.getSessionConfig().setUseReadOperation(true);
ConnectFuture cf = connector.connect(new InetSocketAddress("localhost",
8998));
cf.awaitUninterruptibly();
IoSession session = cf.getSession();
session.write(getFileUploadRequest());
Object result = session.read().awaitUninterruptibly().getMessage();
if ("success".equals(result))
{
connector.dispose();
}
}
private static FileUploadRequest getFileUploadRequest() throws Exception
{
FileUploadRequest fileUploadRequest = new FileUploadRequest();
fileUploadRequest.setFileName("djk.jpg");
File file = new File("E://djk.jpg");
InputStream is = new FileInputStream(file);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte [] bytes = new byte[1024];
int length = 0;
while (-1 !=(length = is.read(bytes)))
{
baos.write(bytes, 0, length);
}
fileUploadRequest.setBytes(baos.toByteArray());
is.close();
baos.close();
return fileUploadRequest;
}
}
package mina.example3;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
public class FileClientHandle extends IoHandlerAdapter
{
@Override
public void messageReceived(IoSession session, Object message)
throws Exception
{
super.messageReceived(session, message);
System.out.println("Result:"+message);
}
@Override
public void messageSent(IoSession session, Object message) throws Exception {
System.out.println("Begin to send Message"+message);
super.messageSent(session, message);
}
}
package mina.example3;
import java.io.Serializable;
/**
*
* @author dujinkai
*
*/
public class FileUploadRequest implements Serializable
{
/**
*
*/
private static final long serialVersionUID = 1547212123169330600L;
/**
*
*/
private String fileName;
/**
*
*/
private byte [] bytes;
public String getFileName()
{
return fileName;
}
public void setFileName(String fileName)
{
this.fileName = fileName;
}
public byte[] getBytes()
{
return bytes;
}
public void setBytes(byte[] bytes)
{
this.bytes = bytes;
}
@Override
public String toString() {
return "FileUploadRequest [fileName=" + fileName + "]";
}
}