Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的流数据:RMI与Socket_Java_Sockets_Rmi - Fatal编程技术网

Java中的流数据:RMI与Socket

Java中的流数据:RMI与Socket,java,sockets,rmi,Java,Sockets,Rmi,我有一个服务器,它需要以观察者模式尽快将数据流传输到多个客户端 在客户端与服务器断开连接之前,每秒至少需要向每个客户端发送200条消息,每条消息由8个不同基本类型的值组成。由于每条消息需要在创建后立即发送,因此不能将消息合并为一条大消息。服务器和客户端都位于同一局域网上 在这种情况下,哪种技术更适合实现流式传输,RMI还是socket?RMI的开销很大,因此不适合。最好创建一个简单的协议,并使用套接字发送数据 根据可接受的延迟,您应该配置套接字缓冲区大小并关闭Nagle算法。我不会为此使用RMI

我有一个服务器,它需要以观察者模式尽快将数据流传输到多个客户端

在客户端与服务器断开连接之前,每秒至少需要向每个客户端发送200条消息,每条消息由8个不同基本类型的值组成。由于每条消息需要在创建后立即发送,因此不能将消息合并为一条大消息。服务器和客户端都位于同一局域网上


在这种情况下,哪种技术更适合实现流式传输,RMI还是socket?

RMI的开销很大,因此不适合。最好创建一个简单的协议,并使用套接字发送数据


根据可接受的延迟,您应该配置套接字缓冲区大小并关闭Nagle算法。

我不会为此使用RMI,RMI只是用于远程方法调用,即当客户端希望在服务器端执行方法(即某些业务逻辑)时

套接字可以,但是您可能需要考虑JMS(java消息服务)来解决这个特定的场景。JMS支持一种称为主题的东西,它本质上是对所有对该主题感兴趣的侦听器的广播。它通常也被优化为非常快

你可以使用类似的方法来实现你想要的。您还有很多选项,如持久性(万一队列下降,消息仍在队列中)、消息过期(万一客户机不接收消息,您希望消息过期)等


显然,您可以使用普通套接字实现所有这些,并自己处理所有事情,但JMS为您提供了所有这些。您可以发送文本或二进制数据,甚至可以发送序列化对象(我个人不推荐后者)。

RMI是一种请求/响应协议,而不是流协议。使用TCP