亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

java使用rmi傳輸大文件示例分享

2019-11-26 15:48:49
字體:
來源:轉載
供稿:網友

為什么要用RMI​
在這次的項目中,對于客戶端與服務器之間的通信,想了許多辦法,由于做的是富客戶端應用,最終將技術選定在了RMI和Java-sockets兩種之間,其中RMI的靈活性不高,客戶端和服務器端都必須是java編寫,但使用比較方便,反觀java-sockets,雖然比較靈活,但需要自己規定服務器端和客戶端之間的通信協議。比較麻煩,幾經權衡,最終還是選擇RMI來進行服務器-客戶端通信

文件上傳問題
在使用java-rmi的過程中,必然會遇到一個文件上傳的問題,由于在rmi中無法傳輸文件流(比如rmi中的方法參數不能是FileInputStream之類的),那么我們只好選擇一種折中的辦法,就是先用FileInputStream將文件讀到一個 Byte數組中,然后把這個Byte數組作為參數傳進RMI的方法中,然后在服務器端將Byte數組還原為outputStream,這樣就能通過RMI 來傳輸文件了

這樣做也有缺點,就是無法檢驗傳輸過來的數據的準確性。

下面我就一個實例來講解一下

FileClient

復制代碼 代碼如下:

package rmiupload;

    import java.io.BufferedInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.rmi.Naming;
    import java.rmi.NotBoundException;
    import java.rmi.RemoteException;

    public class FileClient {

        public FileClient() {
            // TODO Auto-generated constructor stub
        }

        public static void main(String[] args) {
            try {
                FileDataService fileDataService = (FileDataService) Naming.lookup("rmi://localhost:9001/FileDataService");
                fileDataService.upload("/Users/NeverDie/Documents/test.mp4", new FileClient().fileToByte("/Users/NeverDie/Music/test.mp4"));
            } catch (MalformedURLException | RemoteException | NotBoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    //這個方法比較重要,通過這個方法把一個名為filename的文件轉化為一個byte數組
        private byte[] fileToByte(String filename){
            byte[] b = null;
            try {
                File file = new File(filename);
                b = new byte[(int) file.length()];
                BufferedInputStream is = new BufferedInputStream(new FileInputStream(file));
                is.read(b);
            } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return b;
        }
    }
FileDataService

package rmiupload;

    import java.net.URL;
    import java.rmi.Remote;
    import java.rmi.RemoteException;

    public interface FileDataService extends Remote{

        //這里的filename應該是該文件存放在服務器端的地址
        public void upload(String filename, byte[] file) throws RemoteException;

    }

FileDataService_imp

復制代碼 代碼如下:

package rmiupload;

    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.net.URL;
    import java.rmi.RemoteException;
    import java.rmi.server.RMIClientSocketFactory;
    import java.rmi.server.RMIServerSocketFactory;
    import java.rmi.server.UnicastRemoteObject;

    public class FileDataService_imp extends UnicastRemoteObject implements FileDataService{

        public FileDataService_imp() throws RemoteException {

        }

        @Override
        public void upload(String filename, byte[] fileContent) throws RemoteException{
            File file = new File(filename);
            try {
                if (!file.exists())
                    file.createNewFile();
                BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(file));
                os.write(fileContent);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

    ;   }

    }

FileServer

復制代碼 代碼如下:

package rmiupload;

    import java.net.MalformedURLException;
    import java.rmi.Naming;
    import java.rmi.RemoteException;
    import java.rmi.registry.LocateRegistry;

    public class FileServer {

        FileDataService fileDataService;

        public FileServer() {
            try {
                fileDataService = new FileDataService_imp();
                LocateRegistry.createRegistry(9001);
                Naming.rebind("rmi://localhost:9001/FileDataService", fileDataService);
            } catch (RemoteException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

     
        }

        /**
         * @param args
         */
        public static void main(String[] args) {
            new FileServer();

        }

    }
   

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲激情第一页| 色悠悠久久久久| 亚洲精品一区二区久| 日日狠狠久久偷偷四色综合免费| 中文字幕精品—区二区| 国产精品九九久久久久久久| 日韩在线视频观看正片免费网站| 亚洲一区二区三区四区视频| 日韩欧美在线视频观看| 日韩中文字幕在线观看| 欧美精品在线视频观看| 国产精品视频内| 68精品国产免费久久久久久婷婷| 久久夜色精品国产| 日韩av中文字幕在线| 少妇av一区二区三区| 欧美性xxxxx极品| 色在人av网站天堂精品| 亚洲精品xxx| 欧美在线播放视频| 亚洲黄色av女优在线观看| 久久69精品久久久久久久电影好| 久久99精品久久久久久噜噜| 久久久久久九九九| 久久久在线免费观看| 黄色一区二区在线| 欧美亚洲国产视频小说| 亚洲高清不卡av| 欧美大人香蕉在线| 高跟丝袜一区二区三区| 欧美中文在线观看国产| 亚洲成人在线视频播放| 午夜精品福利在线观看| 亚洲情综合五月天| 亚洲精品日韩久久久| 狠狠色狠狠色综合日日五| 亚洲天堂av在线免费| 国内精品美女av在线播放| 91在线中文字幕| 成人中文字幕在线观看| 久久免费观看视频| 国产成人精品国内自产拍免费看| 亚洲深夜福利在线| 亚洲国产美女久久久久| 国产精品美女久久久久久免费| 亚洲www永久成人夜色| 不卡毛片在线看| 欧美大荫蒂xxx| 亚洲视频视频在线| 日韩电影中文字幕一区| 国产精品成人免费视频| 久久久国产精彩视频美女艺术照福利| 国产精品av免费在线观看| 自拍偷拍亚洲在线| 韩国19禁主播vip福利视频| 91久久在线视频| 亚洲欧美国产日韩天堂区| 欧美激情一区二区三区高清视频| 亚洲性69xxxbbb| 欧美激情亚洲激情| 欧美美女操人视频| 欧美视频免费在线| 国产精品久久久久久久天堂| 欧美色另类天堂2015| 中文字幕亚洲欧美日韩高清| 在线观看欧美成人| 国产在线高清精品| 永久免费精品影视网站| 欧美激情啊啊啊| 综合国产在线视频| 中文综合在线观看| 超碰精品一区二区三区乱码| 国语自产精品视频在免费| 色综合亚洲精品激情狠狠| 亚洲免费伊人电影在线观看av| 日日狠狠久久偷偷四色综合免费| 91国内精品久久| 国产精品久久久久久久久免费| 国产一区二区成人| 亚洲国产日韩欧美综合久久| 欧美在线视频免费播放| 亚洲国产成人久久| 中文字幕在线成人| 欧美精品电影免费在线观看| 久久99国产精品自在自在app| 丝袜亚洲另类欧美重口| 亚洲影视九九影院在线观看| 亚洲欧美国产精品久久久久久久| 国产免费成人av| 欧美专区在线播放| 精品夜色国产国偷在线| 精品国产欧美一区二区五十路| 日韩av在线高清| 91亚洲精品久久久| 久久精品免费电影| 欧美黑人性视频| 久久免费高清视频| 欧美激情一二区| 国产成人精品久久二区二区| 2024亚洲男人天堂| 久久久久久中文字幕| 国产精品久久久久国产a级| 97香蕉超级碰碰久久免费软件| 欧美在线国产精品| 亚洲视频axxx| 欧美日韩一区二区免费视频| 欧美大片免费看| 欧美精品在线免费观看| 日韩hd视频在线观看| 欧美日韩另类字幕中文| 97国产在线视频| 久久精品国产视频| 日韩视频在线免费| 国产噜噜噜噜噜久久久久久久久| 4k岛国日韩精品**专区| 欧美xxxx14xxxxx性爽| 久久精品夜夜夜夜夜久久| 伊人男人综合视频网| 国产一区二区三区日韩欧美| 高清欧美性猛交xxxx| 久久亚洲影音av资源网| 欧美大片第1页| 日韩欧美国产高清91| 久久手机免费视频| 国产精品xxxxx| 国产精品精品久久久| 国产精品激情av在线播放| 亚洲精品欧美极品| 国产精品久久久久影院日本| 久久九九全国免费精品观看| 国产一区二区三区精品久久久| 久久久国产精品x99av| 精品中文字幕在线| 91精品国产九九九久久久亚洲| 欧美在线观看网址综合| 亚洲а∨天堂久久精品喷水| 亚洲性夜色噜噜噜7777| 国产精品久久久久秋霞鲁丝| 欧美激情网站在线观看| 中文日韩电影网站| 亚洲网站在线播放| 韩剧1988免费观看全集| 成年人精品视频| 国产精品一区二区三区久久| 红桃av永久久久| 国产日韩精品综合网站| 亚洲第一色中文字幕| 欧洲亚洲免费视频| 欧美乱大交xxxxx| 8x拔播拔播x8国产精品| 日韩精品久久久久久久玫瑰园| 91中文字幕一区| 国产成人亚洲综合青青| 北条麻妃久久精品| 久久躁日日躁aaaaxxxx| 欧美成人高清视频| www.欧美精品一二三区| 亚洲国产日韩欧美综合久久| 一区二区三区精品99久久| 国产精品video| 亚洲国产精品人久久电影| 青草青草久热精品视频在线观看| 51精品在线观看| 国产精品一区二区三区久久久|