无法读取java中的输入流套接字
我正在编写一个通过tcp套接字进行通信的客户机/服务器应用程序。 在我工作的最后阶段,我面临着一个问题。问题是我在服务器上有一个无法读取java中的输入流套接字,java,sockets,arraylist,jackson,inputstream,Java,Sockets,Arraylist,Jackson,Inputstream,我正在编写一个通过tcp套接字进行通信的客户机/服务器应用程序。 在我工作的最后阶段,我面临着一个问题。问题是我在服务器上有一个arrayList,我正试图使用jackson对其进行序列化并将其发送到客户端。当数组中只有一个对象时,它可以完美地工作。但是当我的arrayList中有两个或两个以上的对象时,服务器将正确地将其发送到客户端,但在客户端,看起来我没有接收到任何东西,它仍然会停留在read() 我还刷新了输出流。我看序列化是正确的 我必须提到,我可以完美地发送和接收所有其他内容,但我只有
arrayList
,我正试图使用jackson
对其进行序列化并将其发送到客户端。当数组中只有一个对象时,它可以完美地工作。但是当我的arrayList
中有两个或两个以上的对象时,服务器将正确地将其发送到客户端,但在客户端,看起来我没有接收到任何东西,它仍然会停留在read()
我还刷新了输出流。我看序列化是正确的
我必须提到,我可以完美地发送和接收所有其他内容,但我只有ArrayLists
的问题,它包含多个对象
以下是我发送数据的方式:(它不会抛出错误,并且发送数据完全正确):
以下是写入函数:
public boolean write (String string)
{
try
{
this.streamOut.writeUTF(string);
streamOut.flush();
return true;
}
catch (Exception ex)
{
System.out.println(ex.getMessage());
return false;
}
}
public String read()
{
String string;
try
{
string = this.streamIn.readUTF();
return string;
}
catch (Exception ex)
{
System.out.println(ex.getMessage());
}
return null;
}
以下是我在客户端的阅读方式:
String json = User.communicationConnection.read();
下面是读取函数:
public boolean write (String string)
{
try
{
this.streamOut.writeUTF(string);
streamOut.flush();
return true;
}
catch (Exception ex)
{
System.out.println(ex.getMessage());
return false;
}
}
public String read()
{
String string;
try
{
string = this.streamIn.readUTF();
return string;
}
catch (Exception ex)
{
System.out.println(ex.getMessage());
}
return null;
}
我不知怎么解决了这个问题。这是因为我发送了一个非常大的字符串(超过4000个字符),即使在数组中有一个对象时也是如此(对象有很多字段不是我的错;-))并且当我序列化包含多个对象的数组时,它会变成一个非常大的字符串,在另一端接收它会花费很长时间。
解决方案是以字节形式发送,还是只发送较小的字符串
我做了第二个解决方案,现在很好。请提供序列化字符串,其中数组中有一个对象,数组中有两个对象。你用什么函数来发送数据?你用什么样的流来读/写数据?谢谢大家,因为字符串的长度非常大。