问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于用JAVA的SOCKET传输文件

发布网友 发布时间:2022-04-22 20:21

我来回答

2个回答

热心网友 时间:2022-05-01 23:32

点对点传输文件
/*
import java.io.*;
import java.net.*;
import java.util.*;
*/
private HttpURLConnection connection;//存储连接
private int downsize = -1;//下载文件大小,初始值为-1
private int downed = 0;//文加已下载大小,初始值为0
private RandomAccessFile savefile;//记录下载信息存储文件
private URL fileurl;//记录要下载文件的地址
private DataInputStream fileStream;//记录下载的数据流
try{
/*开始创建下载的存储文件,并初始化值*/
File tempfileobject = new File("h:\\webwork-2.1.7.zip");
if(!tempfileobject.exists()){
/*文件不存在则建立*/
tempfileobject.createNewFile();
}
savefile = new RandomAccessFile(tempfileobject,"rw");

/*建立连接*/
fileurl = new URL("https://webwork.dev.java.net/files/documents/693/9723/webwork-2.1.7.zip");
connection = (HttpURLConnection)fileurl.openConnection();
connection.setRequestProperty("Range","byte="+this.downed+"-");

this.downsize = connection.getContentLength();
//System.out.println(connection.getContentLength());

new Thread(this).start();
}
catch(Exception e){
System.out.println(e.toString());
System.out.println("构建器错误");
System.exit(0);
}
public void run(){
/*开始下载文件,以下测试非断点续传,下载的文件存在问题*/
try{
System.out.println("begin!");
Date begintime = new Date();
begintime.setTime(new Date().getTime());
byte[] filebyte;
int onecelen;
//System.out.println(this.connection.getInputStream().getClass().getName());
this.fileStream = new DataInputStream(
new BufferedInputStream(
this.connection.getInputStream()));
System.out.println("size = " + this.downsize);
while(this.downsize != this.downed){
if(this.downsize - this.downed > 262144){//设置为最大256KB的缓存
filebyte = new byte[262144];
onecelen = 262144;
}
else{
filebyte = new byte[this.downsize - this.downed];
onecelen = this.downsize - this.downed;
}
onecelen = this.fileStream.read(filebyte,0,onecelen);
this.savefile.write(filebyte,0,onecelen);
this.downed += onecelen;
System.out.println(this.downed);
}
this.savefile.close();
System.out.println("end!");
System.out.println(begintime.getTime());
System.out.println(new Date().getTime());
System.out.println(begintime.getTime() - new Date().getTime());
}
catch(Exception e){
System.out.println(e.toString());
System.out.println("run()方法有问题!");
}
}

/***
//FileClient.java
import java.io.*;
import java.net.*;
public class FileClient {
public static void main(String[] args) throws Exception {

//使用本地文件系统接受网络数据并存为新文件

File file = new File("d:\\fmd.doc");

file.createNewFile();

RandomAccessFile raf = new RandomAccessFile(file, "rw");

// 通过Socket连接文件服务器

Socket server = new Socket(InetAddress.getLocalHost(), 3318);
//创建网络接受流接受服务器文件数据
InputStream netIn = server.getInputStream();
InputStream in = new DataInputStream(new BufferedInputStream(netIn));
//创建缓冲区缓冲网络数据

byte[] buf = new byte[2048];

int num = in.read(buf);

while (num != (-1)) {//是否读完所有数据

raf.write(buf, 0, num);//将数据写往文件

raf.skipBytes(num);//顺序写文件字节

num = in.read(buf);//继续从网络中读取文件

}
in.close();
raf.close();
}
}

//FileServer.java
import java.io.*;
import java.util.*;
import java.net.*;
public class FileServer {
public static void main(String[] args) throws Exception {

//创建文件流用来读取文件中的数据

File file = new File("d:\\系统特点.doc");

FileInputStream fos = new FileInputStream(file);

//创建网络服务器接受客户请求

ServerSocket ss = new ServerSocket(8801);

Socket client = ss.accept();

//创建网络输出流并提供数据包装器

OutputStream netOut = client.getOutputStream();

OutputStream doc = new DataOutputStream(
new BufferedOutputStream(netOut));

//创建文件读取缓冲区

byte[] buf = new byte[2048];

int num = fos.read(buf);
while (num != (-1)) {//是否读完文件
doc.write(buf, 0, num);//把文件数据写出网络缓冲区
doc.flush();//刷新缓冲区把数据写往客户端
num = fos.read(buf);//继续从文件中读取数据
}
fos.close();
doc.close();
}
}
*/

热心网友 时间:2022-05-02 00:50

五分太少了吧?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 怎么我的网易云音乐里的歌单突然就没了? 用java socket实现一个服务器对多个客户端的文件传输 为什么网易云很多歌手喜欢的歌都删了 在JAVA的socket中进行传输对象和文件 java中怎么用socket 一次传多个文件啊? java socket传送文件 驰球保险柜故障分析:保险柜怎么一直总是有“咚”的声音? 驰球和艾谱中怎么选择一款质量好的保险柜啊。 艾谱保险箱怎么样?比驰球好吗 保险箱质量哪种好?艾谱还是驰球? 艾斐堡与驰球比哪个保险箱好? 驰球保险柜使用超控钥匙怎么还是打不开 驰球保险柜 一直闪good,无法输密码,打不开柜门 十大保险箱品牌中的艾谱和驰球哪个好 保险箱品牌艾斐堡,驰球,质量上谁更好? 驰球保险柜黑鲨打不开 驰球牌保险箱怎么修改密码 驰球保险柜+银鲨2应急钥匙孔在哪里 驰球保险柜怎么样,好吗 家用保险箱,驰球、艾谱选择哪个更合适? 怎么用java的socket进行文件传输?谁能给个简单的例子,包括发送端和接收端。 网易云音乐,我喜欢的音乐列表 全部删除了,有没有办法恢复啊? JAVA怎么通过socket传输各种类型文件 为什么网易云音乐歌单里的有些歌曲会消失了? java 使用ServerSocket和Socket实现文件传输。 找回网易云音乐中我喜欢的歌曲? 请问各位,如何用JAVA的socket技术进行文件和图片的传输? 我和朋友一起用网易云音乐一起听歌,我不小心把他的歌单弄没了,还能找... JAVA socket传输二进制文件问题 java socket局域网传输文件丢包严重 毛呢子搭配裙子怎么搭配合理好看? 为什么对方网易云音乐听歌排行突然出现新歌,突然又消失 java使用socket文件上传 女生冬天该如何穿或搭配裙子? 网易云音乐登陆后,原来收藏那些歌全没了。只好又退出登陆!!难道不是应 ... java中,利用socket传送大文件,中途停止问题 女士藏青色的体恤搭配什么裙子好看图片 网易云莫名其妙偷偷自动取消喜欢有版权的歌,是什么原因,怎么解决? 办理中行国内商业票据贴现需要哪些材料? java socket传输对象流和文件流的问题