package com.psbc.socket;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
import java.util.UUID;
import org.apache.ibatis.session.SqlSession;
import com.psbc.mapper.FileRepositoryMapper;
import com.psbc.model.FileRepository;
import com.psbc.util.DBUtil;
import com.psbc.util.DateUtil;
public class SocketServer {
private int port = 8085;
private void start() {
Socket socket = null;
try {
ServerSocket serverSocket = new ServerSocket(port);
while (true) {
System.out.println("等待客户端连接,连接端口:" + port);
socket = serverSocket.accept();
System.out.println("建立socket链接");
DataInputStream dis = new DataInputStream(
new BufferedInputStream(socket.getInputStream()));
String savePath = "D:\\filedoc\\";
String fileName = ""; // 文件名
String channel = ""; //传送渠道
String prefix = ""; // 文件前缀
String suffix = ""; // 文件后缀
int bufferSize = 8192;
byte[] buf = new byte[bufferSize]; // 文件缓存区
long len = 0; // 文件总长度
fileName = dis.readUTF();
channel = dis.readUTF();
prefix = fileName.substring(0, fileName.lastIndexOf("."));
suffix = fileName.substring(fileName.lastIndexOf("."));
String year = "";
String month = "";
String day = "";
String date = DateUtil.getString(new Date(),"yyyy_MM_dd");
year = date.substring(0, date.indexOf("_"));
month = date.substring(date.indexOf("_") + 1, date
.lastIndexOf("_"));
day = date.substring(date.lastIndexOf("_") + 1);
savePath += year + "\\" + month + "\\" + day + "\\";
File dir = new File(savePath);
if (!dir.exists()) {
dir.mkdirs();
}
savePath += prefix + System.currentTimeMillis() + suffix; // 文件存放绝对路径
len = dis.readLong();
DataOutputStream dosFile = new DataOutputStream(
new BufferedOutputStream(new FileOutputStream(savePath)));
System.out.println("File size():" + len + "bytes");
System.out.println("开始接收文件!");
while (true) {
int read = 0;
if (dis != null) {
read = dis.read(buf);
}
if (read == -1) {
break;
}
dosFile.write(buf, 0, read);
}
System.out.println("接收完成,文件存为:" + savePath);
DataOutputStream dosUUID = new DataOutputStream(socket.getOutputStream());
UUID uuid = UUID.randomUUID();
//String fileId = String.valueOf(uuid).replaceAll("-", "");
String fileId = String.valueOf(uuid);
SqlSession session = DBUtil.getSession().openSession();
FileRepository fr = new FileRepository();
fr.setFileId(fileId);
fr.setFileType(suffix);
fr.setFileSize((int)len);
fr.setFilePath(savePath);
fr.setSourceChannel(channel);
fr.setCreateTime(new Date());
FileRepositoryMapper frMapper = session.getMapper(FileRepositoryMapper.class);
frMapper.insert(fr);
session.commit();
session.close();
System.out.println("数据库插入成功!");
System.out.println("fileId:" + fileId);
dosUUID.writeUTF(fileId);
dosUUID.flush();
System.out.println("发送完成!");
dis.close();
dosFile.close();
dosUUID.close();
socket.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new SocketServer().start();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
mina传文件案例,客户端加服务端
共50个文件
class:18个
java:16个
xml:5个
需积分: 9 13 下载量 6 浏览量
2017-01-07
16:20:11
上传
评论
收藏 1.74MB RAR 举报
温馨提示
minafileserver(Socket客户端+Mina服务端传文件)
资源推荐
资源详情
资源评论
收起资源包目录
minafileserver(Socket客户端+Mina服务端传文件).rar (50个子文件)
minafileserver(Socket客户端+Mina服务端传文件)
.settings
org.eclipse.jdt.core.prefs 330B
src
com
psbc
mina
MINAServer.java 3KB
SocketClient.java 2KB
model
FileRepository.java 1KB
FileObj.java 963B
BaseMessage.java 528B
socket
SocketClient.java 2KB
SocketServer.java 4KB
mapper
FileRepositoryMapper.java 164B
mapping
FileRepositoryMapper.xml 1KB
util
DateUtil.java 396B
BeanUtil.java 270B
BaseMessageEncoder.java 862B
SocketUtil.java 3KB
DBUtil.java 623B
MathProtocolCodecFactory.java 427B
BaseMessageDecoder.java 3KB
MINAUtil.java 3KB
Configuration.xml 852B
.project 1016B
WebRoot
META-INF
MANIFEST.MF 39B
WEB-INF
web.xml 381B
classes
com
psbc
mina
SocketClient.class 2KB
ServerHandler.class 3KB
MINAServer.class 2KB
model
BaseMessage.class 881B
FileRepository.class 2KB
FileObj.class 1KB
socket
SocketClient.class 2KB
SocketServer.class 5KB
mapper
FileRepositoryMapper.class 191B
mapping
FileRepositoryMapper.xml 1KB
util
BaseMessageDecoder.class 4KB
DBUtil.class 996B
SocketUtil.class 3KB
DateUtil.class 877B
BaseMessageDecoder$Context.class 757B
BaseMessageEncoder.class 2KB
MathProtocolCodecFactory.class 667B
BeanUtil.class 569B
MINAUtil.class 3KB
Configuration.xml 852B
lib
slf4j-api-1.7.7.jar 29KB
mybatis-3.0.4.jar 626KB
slf4j-simple-1.7.7.jar 10KB
mina-core-2.0.7.jar 630KB
jdbc4-9.4-1201.jar 628KB
index.jsp 834B
.mymetadata 315B
.classpath 752B
.myeclipse
共 50 条
- 1
资源评论
qqqwers
- 粉丝: 0
- 资源: 25
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功