Hello.java:
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Hello extends Remote {
String sayHello() throws RemoteException;
}
Client.java:
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class Client {
private Client() {}
public static void main(String[] args) {
String host = (args.length < 1) ? null : args[0];
try {
//注冊指定的主機,沒有指定就是本地主機
Registry registry = LocateRegistry.getRegistry(host);
//取得主機打開的服務接口
Hello stub = (Hello) registry.lookup("Hello");
String response = stub.sayHello();
System.out.println("response: " + response);
} catch (Exception e) {
System.err.println("Client exception: " + e.toString());
e.printStackTrace();
}
}
}
Server.java:
import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class Server implements Hello {
public Server() {}
public String sayHello() {
return "Hello, world!";
}
public static void main(String args[]) {
try {
Server obj = new Server();
Hello stub = (Hello) UnicastRemoteObject.exportObject(obj, 0);
// Bind the remote object's stub in the registry
Registry registry = LocateRegistry.getRegistry();
registry.bind("Hello", stub);
System.err.println("Server ready");
} catch (Exception e) {
System.err.println("Server exception: " + e.toString());
e.printStackTrace();
}
}
}
工作流程圖:
Hello的客戶端工作流程
<textbox style="mso-next-textbox: #_x0000_s1029"><font face="Times New Roman" size="3"></font></textbox><textbox style="mso-next-textbox: #_x0000_s1026"><table cellspacing="0" cellpadding="0" width="100%"><tbody><tr>
<td style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent">
<div>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size="3">注冊遠程服務器</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font face="Times New Roman" size="3">Registry registry=LocateRegistry.getRegistry();</font></span></p>
</div>
</td>
</tr></tbody></table></textbox><textbox style="mso-next-textbox: #_x0000_s1027"><table cellspacing="0" cellpadding="0" width="100%"><tbody><tr>
<td style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent">
<div>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size="3">以字符串的形式獲得遠程服務器的服務</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font face="Times New Roman" size="3">Hello stub=(Hello)registry.lookup("Hello");</font></span></p>
</div>
</td>
</tr></tbody></table></textbox><textbox style="mso-next-textbox: #_x0000_s1028"><table cellspacing="0" cellpadding="0" width="100%"><tbody><tr>
<td style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent">
<div>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size="3">用取得的服務去調用遠程服務器的方法</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font face="Times New Roman" size="3">String response=stub.sayHello();</font></span></p>
</div>
</td>
</tr></tbody></table></textbox><stroke endarrow="block"><font face="Times New Roman" size="3"></font></stroke><stroke endarrow="block"><font face="Times New Roman" size="3"></font></stroke>
<shadow offset2="-6pt,-6pt" offset="-3pt,-3pt" color2="shadow add(102)" type="double"><font face="Times New Roman" size="3"></font></shadow>
<textbox style="mso-next-textbox: #_x0000_s1035"><font face="Times New Roman" size="3"></font></textbox><textbox style="mso-next-textbox: #_x0000_s1032"><table cellspacing="0" cellpadding="0" width="100%"><tbody><tr>
<td style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent">
<div>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使用</span><span lang="EN-US"><font face="Times New Roman">JRMP</font></span><span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">(</span><span lang="EN-US"><font face="Times New Roman">Java </font></span><span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">遠程方法協議)用于導出一個遠程對象,并且獲得一個與遠程對象通信的</span><span lang="EN-US"><font face="Times New Roman">stub</font></span></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font face="Times New Roman" size="3">Hello stub=(Hello)UnicastRemoteObject.exportObject(obj,0);</font></span></p>
</div>
</td>
</tr></tbody></table></textbox><textbox style="mso-next-textbox: #_x0000_s1033"><table cellspacing="0" cellpadding="0" width="100%"><tbody><tr>
<td style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent">
<div>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size="3">注冊服務器</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font face="Times New Roman" size="3">Registry registry=LocateRegistry.getRegistry();</font></span></p>
</div>
</td>
</tr></tbody></table></textbox><textbox style="mso-next-textbox: #_x0000_s1034"><table cellspacing="0" cellpadding="0" width="100%"><tbody><tr>
<td style="BORDER-RIGHT: #d4d0c8; BORDER-TOP: #d4d0c8; BORDER-LEFT: #d4d0c8; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent">
<div>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">將名字綁定到遠程通信的</span><span lang="EN-US"><font face="Times New Roman">stub</font></span><span style="FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">上,并且注冊</span></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font face="Times New Roman" size="3">registry.bind("Hello",stub);</font></span></p>
</div>
</td>
</tr></tbody></table></textbox><stroke endarrow="block"><font face="Times New Roman" size="3"></font></stroke><stroke endarrow="block"><font face="Times New Roman" size="3"></font></stroke>
分享到:
相关推荐
本压缩包包含的“一个简单的qt版helloworld程序”是初学者接触Qt编程的一个基础示例,旨在帮助理解Qt的基本语法和项目构建过程。 首先,让我们来理解一下Qt中的"Hello, World!"程序的基本结构。在Qt中,我们通常会...
标题中的"一个简单的HelloWorld的mfc的程序"是一个入门级别的示例,用于帮助初学者了解如何使用MFC来创建一个基本的Windows应用程序。 在MFC中,创建一个"Hello, World!"程序通常涉及以下步骤: 1. **设置项目**:...
"程序是每个初学者接触C语言时的第一个实例,它简单地展示了如何编译和运行一个基本的C程序。这个程序的名字来源于1972年Brian Kernighan的《The C Programming Language》一书,自此之后,它成为了编程入门的标志。...
这个简单的程序展示了如何在Android环境中创建、编译和运行一个基本的应用程序。让我们深入探讨一下这个过程以及涉及的关键知识点。 首先,Android应用程序的基本构建块是Activity,它是一个用户界面单元,负责处理...
这个压缩包文件包含了一个简单的"hello模块"Linux驱动程序及其对应的Makefile文件,用于在Fedora 14环境下编译和加载该驱动。 首先,我们来看一下"hello模块"的主要功能。这个驱动程序通常会在加载时向系统打印一条...
在OpenWrt环境中编写和运行"Hello, World"程序是学习OpenWrt开发的一个基础步骤,也是理解其工作原理的起点。 一、OpenWrt简介 OpenWrt是由一系列开源项目构建而成的,包括Linux内核、 BusyBox 和 U-Boot 等。它的...
Android Studio 3.0 安装和第一个Hello World程序 Android Studio 3.0 是一个功能强大且流行的Android集成开发环境(IDE),它提供了一个完整的开发工具集,包括代码编辑、编译、调试和模拟器等功能。下面是Android...
简单描述HELLOworld public class HelloWorld{ public static void main (String[]args){ System.out.println("HelloWorld!"); } }
在iOS开发领域,"Hello, World!"程序是一个经典的起点,对于初学者来说,它是了解编程...文件"iPhone的第一个程序HelloWorld开发图解-jason(20100817).doc"可能会提供更详细的步骤和图示,帮助你更好地理解这一过程。
ubuntu中编写第一个helloworld简单c语言程序_百度经验.pdf
这个压缩包文件包含的是一个基础的"Hello World"程序,它展示了如何在QT环境中编写简单的应用程序。让我们深入探讨一下QT编程的基本概念和这个程序可能涉及的关键点。 首先,QT的核心是其C++库,它提供了丰富的类和...
"程序是每个程序员学习新语言时的第一个传统示例,它简单地在控制台上打印出“Hello, World!”的文本,帮助初学者了解如何编译和运行一个基本的程序。 在C++中,编写一个"Hello, World!"程序非常直观。让我们详细...
本示例介绍了一个最基础的Delphi控制台应用程序,该程序的功能是在控制台上输出“Hello, World!”。下面我们将深入分析该程序的结构和实现方式。 #### 三、程序结构解析 ##### 1. 程序定义 ```pascal program Hello...
在这个“linux环境下用makefile编译简单的helloworld程序”的主题中,我们将深入理解如何创建并使用`Makefile`来编译一个基本的C或C++程序,例如“helloworld”。 首先,`helloworld`程序是一个经典的入门示例,...
在Android开发领域,"HelloWorld"程序是每个初学者入门时的第一个接触点,它标志着开发者在Android世界中的第一次正式亮相。这个程序虽然简单,但却是理解Android应用开发基础的重要起点。接下来,我们将深入探讨...
"Hello World"程序是计算机编程领域的一个传统,它通常是初学者接触编程的第一课。这个简单的程序在各种编程语言中都存在,它的主要作用是验证一个编程环境是否已经正确设置,同时向新学习者展示基本的代码结构和...
本文将详细介绍如何从源码编译 OpenWrt SDK,并使用该 SDK 开发并部署一个简单的 HelloWorld 应用程序。 #### 二、编译环境准备 为了确保编译过程顺利进行,首先需要设置一个合适的编译环境。本文中的编译环境为 ...
通过这个简单的"HelloWorld"程序,你将对Android应用的基本构建块有一个初步的认识,包括Java编程、XML布局设计以及Android Studio的使用。随着你深入学习,你将掌握更多高级概念,如Intent、Service、...
然而,本例中的"HelloWorld"似乎更侧重于用户界面设计,这意味着它可能是一个带有图形用户界面(GUI)的应用程序,而不是简单的控制台程序。 【描述】提到的是一个与界面设计相关的"HelloWorld"程序。这表明我们将...
【Hello程序编写】是编程初学者常常接触的第一个课题,它主要目的是帮助新人快速理解编程语言的基本结构和运行机制。在本案例中,我们使用的工具是Qt4,一个强大的跨平台应用开发框架,支持多种编程语言,包括C++。 ...