當前位置:成語大全網 - 書法字典 - 關於使用JAVA套接字傳輸文件

關於使用JAVA套接字傳輸文件

點對點文件傳輸

/*

導入Java . io . *;

導入Java . net . *;

導入Java . util . *;

*/

私有HttpURLConnection連接;//存儲連接

private int downsize =-1;//下載文件大小,初始值為-1。

private int downed = 0;//文佳的下載大小,初始值為0。

private random access file save file;//記錄下載信息存儲文件

私有URL文件URL//記錄要下載的文件的地址。

私有DataInputStream文件流;//記錄下載的數據流

嘗試{

/*開始創建下載的存儲文件並初始化值*/

File tempfile object = new File(“h:\ \ webwork-2.1.7 . zip“);

如果(!tempfile object . exists()){

/*如果文件不存在則創建*/

tempfileobject . create new file();

}

save file = new random access file(tempfile object,“rw“);

/*建立連接*/

fileurl =新URL(“/files/documents/693/9723/webwork-2.1.7 . zip“);

connection =(HttpURLConnection)fileurl . open connection();

connection . setrequestproperty(“Range“,“byte =“+this . downed+“-“);

this . downsize = connection . getcontentlength();

//system . out . println(connection . getcontentlength());

新線程(this)。start();

}

捕捉(異常e ){

system . out . println(e . tostring());

System.out.println(“生成器錯誤“);

system . exit(0);

}

公共void運行(){

/*開始下載文件。以下測試將在沒有斷點的情況下繼續進行。下載的文件有問題*/

嘗試{

system . out . println(“begin!);

Date begin time = new Date();

begintime.setTime(新日期()。getTime());

byte【】file byte;

int onecelen

//system . out . println(this . connection . getinputstream()。getClass()。getName());

this . filestream = new data inputstream(

新緩沖區輸入流(

this . connection . getinputstream()));

system . out . println(“size =“+this . downsize);

同時(this.downsize!= this . downed ){

如果(this . downsize-this . down & gt;262144){//設置最大緩存為256KB。

filebyte =新字節【262144】;

onecelen = 262144;

}

否則{

file byte = new byte【this . downsize-this . downed】;

onecelen = this . downsize-this . down;

}

onecelen = this . filestream . read(file byte,0,onecelen);

this . save file . write(file byte,0,one celen);

this . downed+= onecelen;

system . out . println(this . downed);

}

this . save file . close();

system . out . println(“end!);

system . out . println(begin time . gettime());

System.out.println(新日期()。getTime());

system . out . println(begin time . gettime()-新日期()。getTime());

}

捕捉(異常e ){

system . out . println(e . tostring());

系統。out . println(“run()方法有問題!“);

}

}

/***

//FileClient.java

導入Java . io . *;

導入Java . net . *;

公共類文件客戶端{

公共靜態void main(String【】args)引發異常{

//使用本地文件系統接受網絡數據並將其保存為新文件。

File file =新文件(“d:\ \ FMD . doc“);

file . create new file();

RandomAccessFile RAF = new RandomAccessFile(file,“rw“);

//通過Socket連接文件服務器。

Socket server = new Socket(inet address . getlocalhost(),3318);

//創建網絡接受流來接受服務器文件數據

InputStream netIn = server . getinputstream();

InputStream in = new data InputStream(new BufferedInputStream(netIn));

//創建緩沖區來緩沖網絡數據

byte【】buf =新字節【2048】;

int num = in . read(buf);

while(num!=(-1)){//數據都讀完了嗎?

RAF . write(buf,0,num);//將數據寫入文件

RAF . skip bytes(num);//按順序寫入文件字節

num = in . read(buf);//繼續從網絡讀取文件。

}

in . close();

RAF . close();

}

}

//FileServer.java

導入Java . io . *;

導入Java . util . *;

導入Java . net . *;

公共類文件服務器{

公共靜態void main(String【】args)引發異常{

//創建文件流以讀取文件中的數據。

File file =新文件(“d:\\系統功能。doc“);

file inputstream fos = new file inputstream(file);

//創建壹個網絡服務器來接受客戶請求。

server socket ss = new server socket(8801);

socket client = ss . accept();

//創建網絡輸出流並提供數據包裝。

output stream netOut = client . get output stream();

輸出流文檔=新數據輸出流(

new BufferedOutputStream(netOut));

//創建文件讀取緩沖區

byte【】buf =新字節【2048】;

int num = fos . read(buf);

while(num!=(-1)){//文件看完了嗎?

doc . write(buf,0,num);//將文件數據寫出網絡緩沖區

doc . flush();//刷新緩沖區以向客戶端寫入數據。

num = fos . read(buf);//繼續從文件中讀取數據

}

fos . close();

doc . close();

}

}

*/