云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 网络文件传输设计报告

网络文件传输设计报告

  • 62 次阅读
  • 3 次下载
  • 2025/6/19 15:11:21

import java.nio.ByteBuffer;

public class FileUtil {

private byte FileInfo = 0x1; ///文件信息上传命令

private byte FileDB = 0x2; ///文件数据传输命令

private int BlockSize = 512; ///规定文件块大小为512

public byte[] getFileInfoPack(String FileName, int FileSize) {

ByteBuffer buf = ByteBuffer.allocate(260); //分配一个新的字节缓冲区

byte[] infopack = new byte[260];

byte[] filename = new byte[255];

System.arraycopy(FileName.getBytes(), 0, filename, 0,

FileName.length()); //从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。

buf.clear();

buf.put(FileInfo); //相对put方法(可选操作),将给定的字节写入此缓冲区的当前位置,然后该位置递增。

buf.putInt(FileSize); //用于写入 int 值的相对 put 方法(可选操作),

//将 4 个包含给定 int 值的字节按照当前的字节顺序写入到

此缓冲区的当前位置,然后将该位置增加 4。

buf.put(filename);

buf.flip();

buf.get(infopack);//此方法将此缓冲区的字节传输到给定的目标数组中

buf.compact();//将缓冲区的当前位置和界限之间的字节(如果有)复制到缓冲区的开始处

return infopack; }

public byte[] getFileDB(int index, int blocksize, byte[] data) {

byte[] filedb = new byte[9 + blocksize]; //对文件本身的传输过程定义

ByteBuffer buf = ByteBuffer.allocate(9 + blocksize);

buf.clear();

buf.put(this.FileDB);

buf.putInt(index);

buf.putInt(blocksize);

buf.put(data,0,blocksize);

buf.flip();

buf.get(filedb);

buf.compact();

return filedb; }

public int getBlockSize(){

return this.BlockSize; } } /*

*文件接受端线程的过程。

*/

import java.nio.channels.SocketChannel;

import java.nio.channels.SelectionKey;

import java.nio.channels.Selector;

import java.nio.ByteBuffer;

import java.io.RandomAccessFile;

import java.io.FileOutputStream;

import java.io.File;

import java.io.IOException;

import java.nio.channels.ClosedChannelException;

public class ReveiceThread extends Thread {

private FileUtil util = new FileUtil();

/*

* 针对面向流的连接套接字的可选择通道。

*/

private SocketChannel r_channel = null; //

private ByteBuffer buf = ByteBuffer.allocate(util.getBlockSize() + 9); //

public ReveiceThread(SocketChannel channel) throws Exception {

this.r_channel = channel;

this.r_channel.configureBlocking(false); }

public void run() {

try {

Selector selector = Selector.open();

SelectionKey key = r_channel.register(selector, SelectionKey.OP_READ);

buf.clear();

File file = null;

FileOutputStream fout = null;//文件输出流对象

RandomAccessFile raf = null;//创建临时文件对象

搜索更多关于: 网络文件传输设计报告 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

import java.nio.ByteBuffer; public class FileUtil { private byte FileInfo = 0x1; ///文件信息上传命令 private byte FileDB = 0x2; ///文件数据传输命令 private int BlockSize = 512; ///规定文件块大小为512 public byte[] getFileInfoPack(String FileName, int FileSize) { ByteBuffer buf = ByteBuffer.allocate(260); //分配一个新的字节缓冲区 byte[] infopack

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com