亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rmi遠程方法調用.txt

?? 分布式計算——RMI遠程方法調用:學習RMI編程
?? TXT
字號:
                                 RMI遠程方法調用
1.實驗目的:
學習RMI編程,了解在多臺計算機上的JAVA應用之間的通信。

2.實驗內容及步驟:
RMI的基礎是接口,RMI構架基于一個重要的原理:定義接口和定義接口的具體實現是分開的。下面通過具體的例子,建立一個簡單的遠程計算(加減乘除運算)服務和使用它的客戶程序
一個正常工作的RMI系統由下面幾個部分組成:
●     遠程服務的接口定義
●     遠程服務接口的具體實現
●     樁(Stub)和框架(Skeleton)文件
●     一個運行遠程服務的服務器
●     一個RMI命名服務,它允許客戶端去發現這個遠程服務
●     類文件的提供者(一個HTTP或者FTP服務器)
●     一個需要這個遠程服務的客戶端程序
下面一步一步建立一個簡單的RMI系統。首先在機器里建立一個新的文件夾,以便放置創建的文件,為了簡單起見,只使用一個文件夾存放客戶端和服務端代碼,并且在同一個目錄下運行服務端和客戶端。
如果所有的RMI文件都已經設計好了,那么你需要下面的幾個步驟去生成你的系統:
1、  編寫并且編譯接口的Java代碼
2、  編寫并且編譯接口實現的Java代碼
3、  從接口實現類中生成樁(Stub)和框架(Skeleton)類文件
4、  編寫遠程服務的主運行程序
5、  編寫RMI的客戶端程序
6、  安裝并且運行RMI系統 

1、  接口
第一步就是建立和編譯服務接口的Java代碼。這個接口定義了所有的提供遠程服務的功能,下面是源程序:
//Calculator.java
//define the interface
import java.rmi.Remote;
public interface Calculator extends Remote
{
    public long add(long a, long b) 
        throws java.rmi.RemoteException;  
    public long sub(long a, long b) 
        throws java.rmi.RemoteException;  
    public long mul(long a, long b) 
        throws java.rmi.RemoteException;  
    public long div(long a, long b) 
        throws java.rmi.RemoteException; 
} 
注意,這個接口繼承自Remote,每一個定義的方法都必須拋出一個RemoteException異常對象。
建立這個文件,把它存放在剛才的目錄下,并且編譯。
>javac Calculator.java

2、  接口的具體實現
下一步,編寫遠程服務的具體實現,這是一個CalculatorImpl類文件:
//CalculatorImpl.java
//Implementation
import java.rmi.server.UnicastRemoteObject 
public class CalculatorImpl extends UnicastRemoteObject implements Calculator 
{ 
    // 這個實現必須有一個顯式的構造函數,并且要拋出一個RemoteException異常 
    public CalculatorImpl() 
        throws java.rmi.RemoteException { 
        super(); 
    }  
    public long add(long a, long b) 
        throws java.rmi.RemoteException { 
        return a + b; 
    }  
    public long sub(long a, long b) 
        throws java.rmi.RemoteException { 
        return a - b; 
    } 
    public long mul(long a, long b) 
        throws java.rmi.RemoteException { 
        return a * b; 
    } 
 
    public long div(long a, long b) 
        throws java.rmi.RemoteException { 
        return a / b; 
    } 
} 
       同樣的,把這個文件保存在相同的目錄里然后編譯他。

3、  樁(Stubs)和框架(Skeletons)
下一步就是要使用RMI編譯器rmic來生成樁和框架文件,這個編譯運行在遠程服務實現類文件上。
>rmic CalculatorImpl
在相同的目錄下運行上面的命令,成功執行完上面的命令可以發現一個Calculator_stub.class文件,如果是使用的Java2SDK,那么還可以發現Calculator_Skel.class文件。
 

4、  主機服務器
遠程RMI服務必須是在一個服務器中運行的。CalculatorServer類是一個非常簡單的服務器。
//CalculatorServer.java
import java.rmi.Naming;
 
public class CalculatorServer {
 
   public CalculatorServer() {
     try {
       Calculator c = new CalculatorImpl();
       Naming.rebind("rmi://localhost:1099/CalculatorService", c);
     } catch (Exception e) {
       System.out.println("Trouble: " + e);
     }
   }
 
   public static void main(String args[]) {
     new CalculatorServer();
   }
}
       建立這個服務器程序,然后保存到相同的目錄下,并且編譯它。

5、  客戶端
客戶端源代碼如下:
//CalculatorClient.java 
import java.rmi.Naming; 
import java.rmi.RemoteException; 
import java.net.MalformedURLException; 
import java.rmi.NotBoundException; 
 
public class CalculatorClient { 
 
    public static void main(String[] args) { 
        try { 
            Calculator c = (Calculator)
                           Naming.lookup(
                 "rmi://localhost
                        /CalculatorService"); 
            System.out.println( c.sub(4, 3) ); 
            System.out.println( c.add(4, 5) ); 
            System.out.println( c.mul(3, 6) ); 
            System.out.println( c.div(9, 3) ); 
        } 
        catch (MalformedURLException murle) { 
            System.out.println(); 
            System.out.println(
              "MalformedURLException"); 
            System.out.println(murle); 
        } 
        catch (RemoteException re) { 
            System.out.println(); 
            System.out.println(
                        "RemoteException"); 
            System.out.println(re); 
        } 
        catch (NotBoundException nbe) { 
            System.out.println(); 
            System.out.println(
                       "NotBoundException"); 
            System.out.println(nbe); 
        } 
        catch (
            java.lang.ArithmeticException
                                      ae) { 
            System.out.println(); 
            System.out.println(
             "java.lang.ArithmeticException"); 
            System.out.println(ae); 
        } 
    } 
} 
       保存這個客戶端程序到相同的目錄下(注意這個目錄是一開始建立那個,所有的文件都在那個目錄下),并且編譯他。 

6、  運行RMI系統
在命令控制臺下運行這個系統,必須開啟三個控制臺窗口,一個運行服務器,一個運行客戶端,還有一個運行RMIRegistry。
首先運行注冊程序RMIRegistry,必須在包含剛寫的類的那個目錄下運行這個注冊程序。
>rmiregistry
這個命令成功的話,注冊程序已經開始運行了,不要管他,現在切換到另外一個控制臺,在第二個控制臺里,運行服務器CalculatorService,輸入如下命令:
>java CalculatorServer
這個服務器就開始工作了,把接口的實現加載到內存等待客戶端的聯接。現在切換到第三個控制臺,啟動客戶端。
>java CalculatorClient
如果所有的這些都成功運行,應該看到下面的輸出:
1 
9 
18 
3 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久不见久久见中文字幕免费| 亚洲影视在线播放| 欧美电影免费观看完整版| 欧美日韩免费一区二区三区视频| www.性欧美| 在线观看一区日韩| 欧美日韩午夜在线| 欧美一区二区精美| 欧美成va人片在线观看| 久久女同性恋中文字幕| 国产日本欧洲亚洲| 亚洲欧洲日产国产综合网| 亚洲美女偷拍久久| 亚洲成人激情社区| 蜜桃av噜噜一区二区三区小说| 青青草国产成人av片免费| 久久99久久99| 成人动漫在线一区| 91久久国产综合久久| 91麻豆精品国产自产在线| 日韩一二三区不卡| 亚洲欧美成人一区二区三区| 亚洲黄色小说网站| 青娱乐精品视频| 国产激情一区二区三区| 91在线视频网址| 欧美日韩一区二区在线视频| 欧美变态tickling挠脚心| 国产精品久久久久影院| 亚洲v日本v欧美v久久精品| 久久精品99国产精品| 97久久精品人人爽人人爽蜜臀 | 日韩一区二区三区在线观看| 久久综合视频网| 亚洲蜜臀av乱码久久精品蜜桃| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品一二二区| 欧美日韩精品专区| 国产精品麻豆欧美日韩ww| 日韩精品成人一区二区在线| 高清不卡在线观看| 欧美一区二区三区电影| 亚洲欧美另类小说视频| 国产一区二区美女| 精品视频999| 国产精品免费视频网站| 久久狠狠亚洲综合| 欧洲精品中文字幕| 国产精品欧美经典| 97se亚洲国产综合自在线| 欧美一区二区美女| 一区二区三区不卡视频| 国产成人午夜视频| 欧美大片一区二区三区| 亚洲综合激情另类小说区| 国产91精品一区二区| 日韩免费视频线观看| 午夜视频一区在线观看| 色婷婷国产精品综合在线观看| 久久综合九色综合97_久久久| 日韩国产欧美三级| 精品视频一区二区三区免费| 亚洲欧洲综合另类在线| 不卡的av电影| 中文字幕av一区二区三区高| 久久成人精品无人区| 日韩美女一区二区三区| 青草av.久久免费一区| 欧美日韩aaa| 亚洲第一二三四区| 欧美日韩在线播放一区| 亚洲444eee在线观看| 欧美日韩免费观看一区二区三区 | 欧美图区在线视频| 亚洲与欧洲av电影| 欧美性受极品xxxx喷水| 亚洲制服丝袜一区| 欧美日韩一区二区在线观看视频| 亚洲国产成人高清精品| 在线观看一区二区精品视频| 亚洲成人av福利| 91精品国产日韩91久久久久久| 视频在线观看一区| 日韩一级片在线播放| 久久超碰97人人做人人爱| 久久久久久久久久美女| 国产成人av电影| 最新高清无码专区| 欧美亚洲国产一卡| 免费成人性网站| 久久一区二区三区四区| 成人av网在线| 亚洲综合在线电影| 日韩三级免费观看| 国产老肥熟一区二区三区| 国产精品乱人伦一区二区| 色一区在线观看| 日韩中文欧美在线| 欧美极品xxx| 欧美偷拍一区二区| 韩国精品在线观看| 一区二区中文字幕在线| 欧美老女人在线| 国产福利一区在线| 一区二区欧美国产| 精品免费视频一区二区| 91在线精品一区二区三区| 香蕉影视欧美成人| 国产欧美日韩在线| 欧美日韩中文字幕一区二区| 国产又黄又大久久| 一区二区高清视频在线观看| 精品久久久三级丝袜| 色天使色偷偷av一区二区| 麻豆国产精品777777在线| 亚洲日本一区二区三区| 欧美精品一区男女天堂| 91精品婷婷国产综合久久性色| 大白屁股一区二区视频| 日精品一区二区三区| 中文字幕色av一区二区三区| 精品国产一区二区三区忘忧草| 色综合久久88色综合天天免费| 久久9热精品视频| 亚洲1区2区3区4区| 亚洲女人的天堂| 久久精品综合网| 91精品福利在线一区二区三区| 99精品一区二区三区| 国内成+人亚洲+欧美+综合在线| 亚洲国产日韩精品| 亚洲欧美日韩电影| 国产日韩av一区| 精品久久久久久久人人人人传媒 | av一区二区三区四区| 久久成人久久爱| 五月天久久比比资源色| 亚洲精品自拍动漫在线| 国产精品国产成人国产三级| www精品美女久久久tv| 日韩一级片在线播放| 717成人午夜免费福利电影| 一本色道久久综合狠狠躁的推荐| av中文字幕一区| 成人性生交大片免费看中文| 国产精品一级片在线观看| 激情成人综合网| 看片的网站亚洲| 激情av综合网| 国产精品99久久久久久似苏梦涵| 狠狠色丁香久久婷婷综合_中| 蜜桃视频在线观看一区| 成人精品视频一区二区三区尤物| 久久成人久久鬼色| 激情小说亚洲一区| 国产精品一区二区久久不卡| 国产精品99久久久久久有的能看 | 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 久久久精品天堂| 久久精品一区二区三区四区| 国产三级精品三级在线专区| 久久久精品国产免费观看同学| 久久精品亚洲一区二区三区浴池 | 日韩av一级电影| 丝袜美腿成人在线| 另类专区欧美蜜桃臀第一页| 国内外成人在线视频| 成人一区在线看| 在线观看亚洲成人| 7777精品伊人久久久大香线蕉 | 一区二区三区自拍| 午夜精品一区二区三区免费视频| 五月天激情综合网| 国内精品不卡在线| 色综合久久久久综合体桃花网| 欧美午夜电影网| 精品国产一区二区三区不卡| 日本一区二区三区dvd视频在线| 亚洲图片你懂的| 日韩黄色在线观看| 国产69精品久久99不卡| 欧美在线免费播放| 日韩精品专区在线| 国产精品激情偷乱一区二区∴| 亚洲va韩国va欧美va| 国产在线不卡一卡二卡三卡四卡| 成年人网站91| 在线成人小视频| 国产精品久久久久国产精品日日| 亚洲一区在线看| 国产成人夜色高潮福利影视| 91福利在线免费观看| 久久综合中文字幕| 一区二区三区中文在线| 国产呦萝稀缺另类资源| 欧美午夜电影一区| 中文字幕在线一区二区三区| 秋霞成人午夜伦在线观看| 91捆绑美女网站| 久久午夜羞羞影院免费观看|