Java - 可以使用套接字来访问远程对象吗?

时间:2013-03-13 19:36:54

标签: java rmi

我已经学习了创建套接字和RMI的基础知识。

问题是套接字可以用于什么?我在SO中看到这篇文章关于使用套接字将String对象发送到Server程序。

Java: Sockets or RMI?

那么,在服务器中获取此String对象后,我可以访问数据库并存储它?当客户端需要访问此String对象时,Server如何检索它并将其发送到客户端?可以使用套接字来完成吗?

我知道我们可以使用RMI来做到这一点。

2 个答案:

答案 0 :(得分:1)

好吧,您可以序列化Java对象,创建可以通过套接字连接发送的流,然后读取流并对其进行反序列化。 这个+一些实用程序基本上就是RMI所做的。但如果你这么倾向,你可以自己动手。

这样的事情:

InputStream is = socket.getInputStream();   
ObjectInputStream ois = new ObjectInputStream(is);   
TestObj obj = (TestObj)ois.readObject();  

class TestObj implements Serializable {  
  //your class
}

答案 1 :(得分:1)

套接字提供对网络流的低级访问,几乎所有其他内容都构建在SocketServerSocket个实例之上。

RMI使用套接字为RMI服务器和RMI客户端实现标准协议。

基本上使用套接字,只要它在TCP上运行(或者如果你使用DatagramSocket实例就是UDP),你就可以实现基于网络的任何东西。

在这种情况下,如果您需要额外的性能,则可以使用套接字,因为您没有RMI协议的开销来减慢通信速度。

在RMI中你会返回一个字符串,所有内容都将由RMI包装,但是如果你使用套接字,则使用服务器中的ObjectOutputStream序列化字符串,并使用{{1进行反序列化在客户端。