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
Java 当应用程序突然终止时,临时存储数据的最佳方式是什么_Java_Sockets_Packet Loss - Fatal编程技术网

Java 当应用程序突然终止时,临时存储数据的最佳方式是什么

Java 当应用程序突然终止时,临时存储数据的最佳方式是什么,java,sockets,packet-loss,Java,Sockets,Packet Loss,在我的socket应用程序中没有数据库,我试图将数据包从socket客户端发送到socket服务器。但是,套接字服务器关闭,数据包发送失败。因此,客户端套接字应用程序被终止。一旦服务器启动,我将重新启动套接字客户端,套接字客户端需要发送失败的数据 有没有最好的方法将失败的数据存储在客户端套接字机器中 我的解决方案:在这里,我计划序列化失败的数据并存储在一个文件中。启动客户端后,它将读取文件并反序列化数据;尝试将其发送到服务器套接字。 我的解决方案有缺陷吗?有很多方法可以解决这个问题,比如实现一个

在我的socket应用程序中没有数据库,我试图将数据包从socket客户端发送到socket服务器。但是,套接字服务器关闭,数据包发送失败。因此,客户端套接字应用程序被终止。一旦服务器启动,我将重新启动套接字客户端,套接字客户端需要发送失败的数据

有没有最好的方法将失败的数据存储在客户端套接字机器中

我的解决方案:在这里,我计划序列化失败的数据并存储在一个文件中。启动客户端后,它将读取文件并反序列化数据;尝试将其发送到服务器套接字。
我的解决方案有缺陷吗?

有很多方法可以解决这个问题,比如实现一个队列,然后队列传递数据包-如果传递不成功,队列在缓冲区中保留x个数据包,直到服务器启动,然后以FIFO方式发送。@Burnkhalid是正确的。排队是一种很好的方法。您只需在应用程序中使用
队列
对象即可。如果您想要一个持久队列,可以使用Redis(易于安装和使用)或RabbitMQ之类的消息队列服务器来实现。非常感谢。我将在队列中进行调查。