2014-01-17 38 views
0

我正在用Java开发聊天应用程序,允许更多用户连接到服务器。我设法建立客户端之间的通信,但问题是当客户端首次发送消息时,服务器会收到它并将其发送到目标客户端。但是,当同一个客户端第二次发送消息(依此类推)时,服务器会收到它首次接收到的消息,因此目标客户端一次又一次接收到相同的消息...我发送了我在其中定义的消息类型的对象另一类..用Java重置Socket输入流

我GOOGLE了一下,发现问题是在流中,它应该在每个数据流过后重置。输出流可以重置,但它有帮助。当我尝试重置输入流时,出现错误。我跑出了想法,有人得到了吗?

+0

显示您的代码。另外,如果您使用的是ObjectStreams,那么对于聊天应用程序来说这是一个糟糕的主意。 – Kayaman

+0

我有我主要的类,我接受套接字和另一个类,我为每个连接实例(每个客户端新线程) – user2085124

+0

这里是代码:http://pastebin.com/7Bap5zHk 什么是一个好主意聊天应用程序而不是ObjectStreams? – user2085124

回答

0

这听起来像你需要调用ObjectOutputStream.reset()。查看Jqvadoc的原因。

+0

我已经尝试过,不幸的是,它不帮助.. – user2085124

+0

试过它怎么样?如果现在具有不同的值,则需要在重新发送同一对象之前调用它。您也可以调查ObjectOutputStream.writeUnshared()。 – EJP

+0

我已经尝试在ObjectOutputStream.write(message)后面写它。 现在我将消息类型从消息更改为字符串,它的工作原理.. – user2085124