Java - can套接字用于访问远程对象



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

问题是套接字可以用来做什么?我在SO中看到了一篇关于使用套接字向服务器程序发送字符串对象的文章。

Java: Sockets还是RMI?

所以,在服务器中获得这个字符串对象后,我可以访问数据库并存储它吗?当客户端需要访问这个String对象时,服务器如何检索它的数据库并将其发送给客户端?这可以只使用套接字来完成吗?

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

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

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

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

在RMI中,您将返回一个字符串,一切都将由RMI为您打包,但如果您使用套接字,您使用服务器的ObjectOutputStream序列化字符串,并在客户端使用ObjectInputStream反序列化。

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

像这样:

InputStream is = socket.getInputStream();   
ObjectInputStream ois = new ObjectInputStream(is);   
TestObj obj = (TestObj)ois.readObject();  
class TestObj implements Serializable {  
  //your class
}

最新更新