我已经学习了创建套接字和RMI的基础知识。
问题是套接字可以用于什么?我在SO中看到这篇文章关于使用套接字将String对象发送到Server程序。
那么,在服务器中获取此String对象后,我可以访问数据库并存储它?当客户端需要访问此String对象时,Server如何检索它并将其发送到客户端?可以使用仅套接字来完成吗?
我知道我们可以使用RMI来做到这一点。
答案 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)
套接字提供对网络流的低级访问,几乎所有其他内容都构建在Socket
或ServerSocket
个实例之上。
RMI使用套接字为RMI服务器和RMI客户端实现标准协议。
基本上使用套接字,只要它在TCP上运行(或者如果你使用DatagramSocket
实例就是UDP),你就可以实现基于网络的任何东西。
在这种情况下,如果您需要额外的性能,则可以使用套接字,因为您没有RMI协议的开销来减慢通信速度。
在RMI中你会返回一个字符串,所有内容都将由RMI包装,但是如果你使用套接字,则使用服务器中的ObjectOutputStream
序列化字符串,并使用{{1进行反序列化在客户端。