文章选自:http://hi.baidu.com/yangtb/blog/item/632e772cc2fa07e88b13994c.html
RMI Vs Socket
RMI技术比较socket的网络编程主要有以下几个方面:
第一、.RMI是面向对象的,而后者不是。
第二、.RMI是与语言相绑定的。比如当你使用Java RMI技术的时候,客户端与服务器端都必须使用Java开发。而socket的网络编程是使用独立于开发语言的,甚至独立于平台。基于socket的网络编程,客户端与服务器端可以使用不同开发语言和不同的平台。
第三、从网络协议栈的观点来看,RMI与socket的网络编程处于不同层次上。基于socket的网络编程位于TCP协议之上,而RMI在TCP协议之上,又定义了自己的应用协议,其传输层采用的是Java远程方法协议(JRMP)。可见,在网络协议栈上,基于RMI的应用位置更高一些,这也决定了,与 socket的网络编程相比,RMI会丧失一些灵活性和可控性,但是好处是它带给了应用开发者更多的简洁,方便和易用。比如:如果你用的是RMI,你不需要关心消息是怎么序列化的,你只需要像本地方法调用一样,使用RMI。代价是:应用开发者无法很好地控制消息的序列化机制。
第四、这是最后一点不同,我认为也是比较重要的一点,就是两种方法的性能比较,其往往决定着你将使用那种技术来开发你的应用。以下引用Adrian Reber在Network-programming with RMI文中对TCP和RMI所做的一个比较,其做的实验主要是对两者在网络传输的带宽上作的对比: 在网络上传输2 byte的有效数据,对于TCP而言,总共有478 byte被额外传输,而对于RMI, 1645byte被额外传输。
发表评论
-
jvm default value
2015-07-17 21:32 594http://www.cnblogs.com/redcreen ... -
加密解密
2013-10-10 14:55 475Java安全之对称加密、非对称加密、数字签名 http ... -
xml 文档 xsd与dtd ,webservices
2013-08-15 19:31 500http://www.ibm.com/developerw ... -
tomcat
2013-08-14 19:11 498tomcat工作原理 http://www.cnblog ... -
类加载器
2013-08-14 19:02 560类加载器:http://blog.csdn.ne ... -
Java中堆内存和栈内存详解
2013-05-15 18:15 564http://www.cnblogs.com/whgw/a ... -
jvm 类编译 加载 监控工具
2013-05-06 22:42 545http://simpleframework.net/bl ... -
print gc parameter
2013-05-01 21:43 512http://lanmaohome.blog.sohu.com ... -
JDK7 AIO (非阻塞IO)实现大并发TCPServer和TCPClient
2013-04-10 17:56 1064http://blog.sina.com.cn/s/blo ... -
CopyOnWriteArrayList LinkedBlockingQueue BlockingQueue
2013-04-09 16:54 665http://blog.163.com/among_198 ... -
java 死锁解决方式
2013-04-08 21:16 691解决方式: 1)尽量使用tryLock(long time ... -
虚拟机调优
2013-04-08 11:58 0通过对JVM的参数设置,达到控制gc回收的频率以 ... -
cglib
2013-03-31 18:45 584文章come from : http://www.uml. ... -
linux 存储过程
2013-03-27 14:06 781出处:http://blog.csdn.net/qinde0 ... -
比较好的 JMS讲解,java
2013-05-12 22:40 474http://blog.csdn.net/zhangxs_ ... -
java 集合类
2013-03-25 14:31 614出处:http://blog.csdn.net/touchS ... -
java 集合类
2013-03-25 13:57 555出处:http://developer.51cto.c ... -
Java NIO
2013-03-21 13:36 688原文出自【比特网】,转载请保留原文链接:http://sof ... -
HashMap原理及冲突之简谈
2013-03-19 16:09 682文章出处: http://space.itpub.net/ ... -
HashMap 结构
2013-03-19 15:24 700文章出处: http://java.chinaitlab. ...
相关推荐
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是网络编程的...
【标题】"东北大学软件学院程序实践:socket+rmi源代码" 在计算机科学与信息技术领域,Socket编程和RMI(Remote Method Invocation,远程方法调用)是两种重要的网络通信技术。东北大学软件学院的这个实践项目结合...
3. **传输层**:最底层处理实际的数据传输,通常使用Java的Socket API来实现。 ### RMI编程 #### 定义远程接口 在实现RMI之前,首先需要定义一个远程接口。这个接口必须继承自`java.rmi.Remote`接口,并且声明...
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技术实现的网络聊天室”的主要知识点。通过这个...
本项目使用socket直接发送数据包来攻击rmi,通过反序列化攻击rmi,双击直接运行,对1099端口的rmi服务直接进行漏洞检测。
在本案例中,"rmi.rar_RMI chat"是一个基于RMI实现的群聊程序,相较于传统的基于Socket的聊天系统,RMI提供了更为简洁和高效的解决方案。 首先,让我们深入理解RMI的工作原理。RMI的核心思想是客户端和服务器端通过...
- **性能**:由于序列化和反序列化的开销,RMI的性能可能不如其他更底层的通信协议(如Socket)。 - **调试困难**:由于涉及网络通信和远程异常,调试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建立连接,通过输入/输出流进行数据交换。在网络聊天室中,...