首页 > 解决方案 > 使用套接字发送大字符串 - java

问题描述

我想要做的是发送大于 60Kb 的字符串,这些字符串不能通过使用 DataOutputStream 的 WriteUTF 方法发送

所以基本上,我是否已经完成了搜索并将我自己的知识添加到它正在使用 getBytes("UTF-8") 方法将字符串转换为字节并将其转换回我使用 new String("UTF-8") 的字符串但是当我在准备流(DataInputStream和DataOutputStream)之后开始向我的服务器发送数据(它必须用一个字符串回应我,该字符串也使用相同的技术转换为字节)时,它们while循环读取数据永远不会结束

我的服务器:

DataInputStream dataInputStream = new 
DataInputStream(sslSocket.getInputStream());
                        DataOutputStream dataOutputStream = new 
DataOutputStream(sslSocket.getOutputStream());

                        byte[] bdata = new byte[1024];

                        while(dataInputStream.read(bdata, 0 , bdata.length) > 0){
                            returnData.append(new String(bdata, Charset.forName("UTF-8")));
                        }

                        String command = returnData.toString();
                        dataOutputStream.write(returnData.toString().getBytes("UTF-8"), 0, returnData.toString().getBytes().length);

我的客户:

        dataOutputStream.write(command.getBytes("UTF-8"), 0, command.getBytes().length);
        byte[] data = new byte[1024];
        while(dataInputStream.read(data, 0, data.length) > 0){
            stringBuilder.append(new String(data, Charset.forName("UTF-8")));
        }
And then use stringBuilder.toString() to get the data out of the builder.

不能真正理解为什么,但这是我的代码,我希望你能帮我解决这个问题:

标签: javastringsocketsserverclient

解决方案


推荐阅读