Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法读取java中的输入流套接字_Java_Sockets_Arraylist_Jackson_Inputstream - Fatal编程技术网

无法读取java中的输入流套接字

无法读取java中的输入流套接字,java,sockets,arraylist,jackson,inputstream,Java,Sockets,Arraylist,Jackson,Inputstream,我正在编写一个通过tcp套接字进行通信的客户机/服务器应用程序。 在我工作的最后阶段,我面临着一个问题。问题是我在服务器上有一个arrayList,我正试图使用jackson对其进行序列化并将其发送到客户端。当数组中只有一个对象时,它可以完美地工作。但是当我的arrayList中有两个或两个以上的对象时,服务器将正确地将其发送到客户端,但在客户端,看起来我没有接收到任何东西,它仍然会停留在read() 我还刷新了输出流。我看序列化是正确的 我必须提到,我可以完美地发送和接收所有其他内容,但我只有

我正在编写一个通过tcp套接字进行通信的客户机/服务器应用程序。 在我工作的最后阶段,我面临着一个问题。问题是我在服务器上有一个
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个字符),即使在数组中有一个对象时也是如此(对象有很多字段不是我的错;-))并且当我序列化包含多个对象的数组时,它会变成一个非常大的字符串,在另一端接收它会花费很长时间。 解决方案是以字节形式发送,还是只发送较小的字符串


我做了第二个解决方案,现在很好。

请提供序列化字符串,其中数组中有一个对象,数组中有两个对象。你用什么函数来发送数据?你用什么样的流来读/写数据?谢谢大家,因为字符串的长度非常大。