RMI技术比较socket的网络编程主要有以下几个方面:
第一、.RMI是面向对象的,而后者不是。
第二、.RMI是与语言相绑定的。比如当你使用Java RMI技术的时候,客户端与服务器端都必须使用Java开发。而socket的网络编程是使用独立于开发语言的,甚至独立于平台。基于socket的网络编程,客户端与服务器端可以使用不同开发语言和不同的平台。
第三、从网络协议栈的观点来看,RMI与socket的网络编程处于不同层次上。基于socket的网络编程位于TCP协议之上,而RMI在TCP协议之上,又定义了自己的应用协议,其传输层采用的是Java远程方法协议(JRMP)。可见,在网络协议栈上,基于RMI的应用位置更高一些,这也决定了,与 socket的网络编程相比,RMI会丧失一些灵活性和可控性,但是好处是它带给了应用开发者更多的简洁,方便和易用。比如:如果你用的是RMI,你不需要关心消息是怎么序列化的,你只需要像本地方法调用一样,使用RMI。代价是:应用开发者无法很好地控制消息的序列化机制。
第四、这是最后一点不同,我认为也是比较重要的一点,就是两种方法的性能比较,其往往决定着你将使用那种技术来开发你的应用。
实验的结果是:RMI与TCP based socket相比,传输相同的有效数据,RMI需要占用更多的网络带宽(protocol overhead)。从这里,我们可以得出一个一般性的结论:RMI主要是用于远程方法的”调用“(RMI是多么的名符其实:)),其技术内涵强调的是 “调用”,基于此,我能想到的是:移动计算,和远程控制,当你的应用不需要在client与server之间传输大量的数据时,RMI是较好的选择,它简洁、易于开发。但是,一旦你的应用需要在client与server之间传输大量的数据,极端的,比如FTP应用,则RMI是不适合的,我们应该使用 socket。
文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/3_program/java/javajs/2009110/154540.html
分享到:
相关推荐
Java聊天软件是网络通信的一种典型应用,而基于RMI(Remote Method Invocation)和Socket的实现方式则为这种软件提供了高效且灵活的通信机制。RMI是Java平台内建的一种远程对象调用技术,它允许一个Java对象调用另一...
基于java的socket及RMI编程,东北大学 程序实践三的成果
在Web服务器与RMI结合的场景中,Socket可以作为底层通信机制,使得Web服务器能够通过RMI与远程服务进行通信。 在"web服务器 RMI meeting sokect"的会议中,可能的讨论点包括: 1. 如何在Web服务器上实现RMI服务,...
在这个基于Java的C/S(客户端/服务器)编程实验中,我们将探讨两种不同的实现方式:基于Socket的通信和基于Java Remote Method Invocation (RMI) 的通信。 首先,我们来看基于Socket的C/S编程。Socket是网络编程的...
3. **传输层**:最底层处理实际的数据传输,通常使用Java的Socket API来实现。 ### RMI编程 #### 定义远程接口 在实现RMI之前,首先需要定义一个远程接口。这个接口必须继承自`java.rmi.Remote`接口,并且声明...
【标题】"东北大学软件学院程序实践:socket+rmi源代码" 在计算机科学与信息技术领域,Socket编程和RMI(Remote Method Invocation,远程方法调用)是两种重要的网络通信技术。东北大学软件学院的这个实践项目结合...
1. **注册基于SSL的RMI Socket Factories**: - 在服务器(Server)和客户端(Client)上,我们需要创建并导出使用自定义的SSL套接字工厂的Registry实例。这可以通过在创建RMI Registry时指定`...
Socket编程为RMI提供了网络连接的基础,使得客户端和服务端能够进行双向通信。同时,由于RMI是基于Java的,因此它还利用了Java的序列化机制,将对象转化为字节流以便在网络上传输。 **分布式特性**:RMI使得会议...
10. **网络编程**:RMI涉及TCP/IP网络编程,客户端和服务器之间通过Socket进行通信。理解套接字编程的基本原理有助于深入理解RMI的工作机制。 以上是关于“java RMI技术实现的网络聊天室”的主要知识点。通过这个...
- **性能**:由于序列化和反序列化的开销,RMI的性能可能不如其他更底层的通信协议(如Socket)。 - **调试困难**:由于涉及网络通信和远程异常,调试RMI应用程序可能比较复杂。 - **单点故障**:RMI注册表是单点...
本项目使用socket直接发送数据包来攻击rmi,通过反序列化攻击rmi,双击直接运行,对1099端口的rmi服务直接进行漏洞检测。
在本案例中,"rmi.rar_RMI chat"是一个基于RMI实现的群聊程序,相较于传统的基于Socket的聊天系统,RMI提供了更为简洁和高效的解决方案。 首先,让我们深入理解RMI的工作原理。RMI的核心思想是客户端和服务器端通过...
5. **I/O流**:Java的Socket编程是RMI的基础,它提供了一种在网络间交换数据的途径。聊天室的实现可能涉及ServerSocket和Socket,以及InputStream和OutputStream,用于读写聊天数据。 6. **异常处理**:由于网络...
RMI克服了传统TCP/IP编程,如Socket编程的繁琐和易错性。使用RMI,开发者可以像调用本地方法一样调用远程服务器上的方法,简化了分布式操作的实现。RMI的核心特点是: 1. 客户端可以直接调用远程服务器上的方法,...
java进程间通讯机制代码----RMI、共享内存、Socket、管道,等方式,每种方法我都讲了原理和例子程序,很有参考意义。在网上很难找到的。
threading, the RMI registry, sockets and socket factories, activation, dynamic class downloading, HTTP tunneling, distributed garbage collection, JNDI, and CORBA. In short, a treasure trove of ...
2. **远程实现类**:实现了远程接口的类,需要继承`UnicastRemoteObject`或使用`RMIServerSocketFactory`自定义socket工厂。例如: ```java public class MyRemoteImpl extends UnicastRemoteObject implements ...
学生还可以进一步探索RMI与其他技术的结合,如Java的多线程、Socket编程,或者更现代的分布式框架如Hadoop、Spark等。理解RMI为理解分布式计算的其他复杂机制奠定了基础。 7. **总结** 华南理工大学的RMI实验为...
实现RMI聊天室首先需要对Java的网络编程有基本理解,包括Socket编程和ServerSocket类的使用。服务器端通过ServerSocket监听客户端连接,客户端使用Socket建立连接,通过输入/输出流进行数据交换。在网络聊天室中,...