欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Java 網(wǎng)絡(luò )文件傳輸
關(guān)于文件傳輸的問(wèn)題,實(shí)際也是一種IO讀寫(xiě)的基本問(wèn)題.對于網(wǎng)絡(luò )而言也是一種IO讀寫(xiě)問(wèn)題.因此所謂網(wǎng)絡(luò )的文件傳輸實(shí)際是兩種IO問(wèn)題的綜合討論.這里我們首先分析一個(gè)圖示.然后圍繞這個(gè)圖示來(lái)討論:
圖1:
分析圖1我們基本可以知道從服務(wù)器文件系統中通過(guò)流把文件中的數據寫(xiě)入到服務(wù)器的進(jìn)程中,然后把進(jìn)程中的數據通過(guò)網(wǎng)絡(luò )IO系統傳遞到客戶(hù)機,這個(gè)階段,網(wǎng)絡(luò )中的數據以字節流的形式保存.當該字節流被客戶(hù)進(jìn)程接受后,客戶(hù)進(jìn)程通過(guò)客戶(hù)本地文件流寫(xiě)入客戶(hù)本地的文件系統中.
 
根據以上分析,我們基本可以確定我所需要處理的問(wèn)題了.首先我們需要可以對本地文件系統IO操作的操作接口,然后是一個(gè)可以對網(wǎng)絡(luò )IO系統進(jìn)行操作的操作接口,已經(jīng)一個(gè)可以把數據包裝成字節流的操作接口,他們分別可以提供客戶(hù)和服務(wù)器兩個(gè)進(jìn)程進(jìn)行讀寫(xiě)的操作.如下圖所示:
 
圖2:
 
根據以上分析,我們可以把問(wèn)題歸結到對以下編程接口的需求上:
 
1.         字節包裝器和字節解包器,
 
2.         網(wǎng)絡(luò )傳輸器和網(wǎng)絡(luò )接收器
 
3.         本地文件讀/寫(xiě)器
 
 
 
而這些Java本身的API就已經(jīng)提供.他們都被包裝到j(luò )ava.io和java.net這兩個(gè)包里,這里我提供一個(gè)基于TCP/IP的實(shí)現版本,使用基于連接的方式來(lái)完成工作.我們首先介紹幾個(gè)相關(guān)的JDK中的類(lèi)來(lái)完成以上任務(wù),
 
1.       DataOutputStream和DataInputStream實(shí)現類(lèi)提供了上面的字節包裝和解包器的實(shí)現
 
2.       ServerSocket和Socekt提供了基于連接的網(wǎng)絡(luò )傳輸和接受接口
 
3.       File,FileInputStream和FileOutputStream提供了基本的本地文件輸入輸出接口.
 
 
服務(wù)器端實(shí)現代碼:
 
import java.io.*;
 
import java.net.*;
 
public class FileServer{
 
       public static void main(String[] args)throws Exception{
 
              //創(chuàng )建文件流用來(lái)讀取文件中的數據
 
              File file=new File("lishengjie.jpg");
 
              FileInputStream fos=new FileInputStream(file);
              
 
              //創(chuàng )建網(wǎng)絡(luò )服務(wù)器接受客戶(hù)請求
 
              ServerSocket ss=new ServerSocket(3108);
 
              Socket client=ss.accept();
              
 
              //創(chuàng )建網(wǎng)絡(luò )輸出流并提供數據包裝器
 
              OutputStream netOut=client.getOutputStream();
 
              OutputStream doc=new DataOutputStream(new BufferedOutputStream(netOut));
 
              
 
              //創(chuàng )建文件讀取緩沖區
 
              byte[] buf=new byte[2048];
 
              int num=fos.read(buf);
 
              while(num!=(-1)){//是否讀完文件
 
                     doc.write(buf,0,num);//把文件數據寫(xiě)出網(wǎng)絡(luò )緩沖區
 
                     doc.flush();//刷新緩沖區把數據寫(xiě)往客戶(hù)端
 
                     num=fos.read(buf);//繼續從文件中讀取數據
 
              }
 
              fos.close();
 
              doc.close();
 
       }
 
}
 
 
客戶(hù)方實(shí)現代碼:
 
import java.io.*;
 
import java.net.*;
 
 
public class FileClient{
 
       public static void main(String[] args)throws Exception{
 
              //使用本地文件系統接受網(wǎng)絡(luò )數據并存為新文件
 
              File file=new File("newFile.jpg");
 
              file.createNewFile();
 
              RandomAccessFile raf=new RandomAccessFile(file,"rw");
              
 
              // 通過(guò)Socket連接文件服務(wù)器
 
              Socket server=new Socket(InetAddress.getLocalHost(),3108);
              
 
              //創(chuàng )建網(wǎng)絡(luò )接受流接受服務(wù)器文件數據 
 
              InputStream netIn=server.getInputStream();
 
              InputStream in=new DataInputStream(new BufferedInputStream(netIn));
              
 
              //創(chuàng )建緩沖區緩沖網(wǎng)絡(luò )數據
 
              byte[] buf=new byte[2048];
 
              int num=in.read(buf);              
 
              while(num!=(-1)){//是否讀完所有數據
 
                     raf.write(buf,0,num);//將數據寫(xiě)往文件
 
                     raf.skipBytes(num);//順序寫(xiě)文件字節
 
                     num=in.read(buf);//繼續從網(wǎng)絡(luò )中讀取文件
 
              }
 
              in.close();
 
              raf.close();
 
       }
 
}
歸結以上代碼:
服務(wù)器 客戶(hù)端 
1.       服務(wù)器從本地文件系統讀取文件
2.       服務(wù)器創(chuàng )建網(wǎng)絡(luò )服務(wù)連接
3.       服務(wù)器提供數據包裝器
4.       服務(wù)器將本地文件寫(xiě)入數據包裝器
5.       服務(wù)器通過(guò)包裝器寫(xiě)入到網(wǎng)絡(luò ) 1.       客戶(hù)端建立新文件準備存儲來(lái)自網(wǎng)絡(luò )的數據
2.       客戶(hù)端連接服務(wù)器
3.       客戶(hù)端通過(guò)網(wǎng)絡(luò )接受服務(wù)器數據并進(jìn)行數據解包
4.       客戶(hù)端將數據寫(xiě)入緩沖區
5.       客戶(hù)端從緩沖區把數據寫(xiě)入客戶(hù)本地文件 

 
總結:
    事實(shí)上java的開(kāi)發(fā)環(huán)境為我們提供大多數的編程接口,為我們簡(jiǎn)化了開(kāi)發(fā)工作量.我們通過(guò)java的IO接口所提供的文件,數據包裝器等接口非常方便的解決了我們上面的開(kāi)發(fā)工作量.同時(shí)在java的net接口所提供的套接字也使得基于連接的數據接受和發(fā)送成為非常容易的工作.
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
linux客戶(hù)端與服務(wù)器的連接,服務(wù)器端與客戶(hù)端TCP連接入門(mén)(一)
如何理解JAVA中的流概念 - 小寶博客|齊鵬波blog
Java輸入、輸入、IO流 類(lèi)層次關(guān)系梳理
什么是IO
Java中級開(kāi)發(fā)工程師知識點(diǎn)歸納
面試五
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久