Java中的重置套接字输入流

Java中的重置套接字输入流,java,sockets,stream,chat,reset,Java,Sockets,Stream,Chat,Reset,我正在用Java开发聊天应用程序,允许更多用户连接到服务器。我设法在客户机之间建立了通信,但问题是当客户机第一次发送消息时,服务器接收到消息并将其发送到目标客户机。但当同一个客户机第二次发送消息,而服务器第一次收到消息时,目标客户机就一次又一次地接收相同的消息。。。我发送在另一个类中定义的Message类型的对象 我在谷歌上搜索了一下,发现问题出在流中,应该在每个数据通过流后重新设置。输出流可以重置,但它没有发送帮助。当我试图重置输入流时,我得到一个错误。我没有主意了,有人有主意吗?听起来你需要

我正在用Java开发聊天应用程序,允许更多用户连接到服务器。我设法在客户机之间建立了通信,但问题是当客户机第一次发送消息时,服务器接收到消息并将其发送到目标客户机。但当同一个客户机第二次发送消息,而服务器第一次收到消息时,目标客户机就一次又一次地接收相同的消息。。。我发送在另一个类中定义的Message类型的对象


我在谷歌上搜索了一下,发现问题出在流中,应该在每个数据通过流后重新设置。输出流可以重置,但它没有发送帮助。当我试图重置输入流时,我得到一个错误。我没有主意了,有人有主意吗?

听起来你需要调用ObjectOutputStream.reset。查看Jqvadoc了解原因。

显示代码。另外,如果您使用的是ObjectStreams,那么对于聊天应用程序来说,这是一个坏主意。我有一个主类,在其中我接受套接字,还有另一个类,我为每个客户端新线程的每个连接实例。下面是代码:对于聊天应用程序而不是ObjectStreams来说,什么是一个好主意?您自己的二进制或文本协议。ObjectStreams中包含所有序列化内容,如果您不知道序列化是如何工作的,则很难使用它们。显示客户端的代码-可能每次都会发送第一条消息。如何尝试?如果同一对象现在具有不同的值,则需要在重新发送该对象之前调用它。您还可以调查ObjectOutputStream.writeUnshared。我尝试在ObjectOutputStream.writemessage之后编写它;现在我将一种消息类型从message改为String,它可以工作了。有人知道它为什么不能处理对象吗。我的消息类如下所示: