【发布时间】:2015-12-18 13:05:48
【问题描述】:
我正在编写一个通过 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;
}
【问题讨论】:
-
请提供序列化字符串,其中数组中有一个对象,数组中有一对对象。你用什么函数来发送数据?
-
你用什么样的流来读/写?
-
谢谢你们,因为字符串的长度非常非常大。
标签: java sockets arraylist jackson inputstream