我正在编写一个通过tcp套接字进行通信的客户端/服务器应用程序。
我现在正处于工作的最后阶段。问题是我在服务器上有arrayList<object>
并尝试使用jackson
序列化它并将其发送到客户端。当数组中只有一个对象时,它可以很好地工作。但是当我的arrayList
中有两个或更多的对象时,服务器会正确地将它发送给客户端,但是在客户端,看起来我没有收到任何东西,它仍会卡在read()
部分,就像什么都没有一样接收。
我也会刷新输出流。我可以看到序列化是正确的。
我必须提到我完全发送和接收所有其他内容但我只有ArrayLists
的问题,其中包含多个对象。
这是我如何发送数据:(它不会抛出任何错误,它发送它完全正确):
write(Repository.clone(mainServer.findSpecifidUsername(repository.getSelf().getLoginForm().getUsername()), repository));
这是写函数:
public boolean write (String string)
{
try
{
this.streamOut.writeUTF(string);
streamOut.flush();
return true;
}
catch (Exception ex)
{
System.out.println(ex.getMessage());
return false;
}
}
以下是我在客户端阅读的方式:
String json = User.communicationConnection.read();
这是读取功能:
public String read()
{
String string;
try
{
string = this.streamIn.readUTF();
return string;
}
catch (Exception ex)
{
System.out.println(ex.getMessage());
}
return null;
}
答案 0 :(得分:0)
我以某种方式解决了这个问题。这是因为我发送一个非常大的字符串(超过4000个字符),即使在数组中有一个对象时(对象有很多字段不是我的错;-))当我序列化数组时包括它将成为一个真正非常大的字符串,它将永远在另一端收到它。 解决方案是以字节发送还是只发送更小的字符串。
我做了第二个解决方案,现在很好。