原因未知" ); } } } 断点上传(客户端) package com . cn . csdn . seesun201
java两台处事器之间,大文件上传(续传),给与了Socket通信机制以及JavaIO流两个技术点,具体思路如下:
实现思路:
1、服:操作ServerSocket搭建处事器,开启相应端口,进行长连接操纵
2、服:使用ServerSocket.accept()要领进行梗阻,接收客户端请求
3、服:每接收到一个Socket就成立一个新的线程来措置惩罚惩罚它
4、客:操作Socket进行长途连接,询问已上传进度
5、客:使用FileInputStream.skip(long length)从指定位置读取文件,向处事器发送文件流
6、服:接收客户端输入流,使用RandomAccessFile.seek(long length)随机读取,将游标移动到指定位置进行读写
7、客/服:一个循环输出,一个循环读取写入
8、示例:以下是具体代码,仅供参考
文件介绍:
FileUpLoadServer.java(处事器接收文件类)
FileUpLoadClient.java(客户端发送文件类)
FinalVariables.java(自界说参数类)
SocketServerListener.java(JavaWeb启动Socket操纵类)
web.xml(配置文件,跟从项目启动)
断点上传(处事端)
package com.cn.csdn.seesun2012.socket;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.math.RoundingMode;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.DecimalFormat;
public class FileUpLoadServer extends ServerSocket {
// 文件巨细
private static DecimalFormat df = null;
// 退出标识
private boolean quit = false;
static {
// 设置数字格局,保存一位有效小数
df = new DecimalFormat("#0.0");
df.setRoundingMode(RoundingMode.HALF_UP);
df.setMinimumFractionDigits(1);
df.setMaximumFractionDigits(1);
}
public FileUpLoadServer(int report) throws IOException {
super(report);
}
/**
* 使用线程措置惩罚惩罚每个客户端传输的文件
*
* @throws Exception
*/
public void load() throws Exception {
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31688.html