使用套接字发送大字符串-Java

时间:2018-12-25 16:05:03

标签: java string sockets server client

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

所以基本上,我已经完成搜索并添加了自己的知识,已经使用getBytes(“ UTF-8”)方法将字符串转换为字节,然后将其转换回字符串,我使用了新的String(“ UTF- 8“),但是当我开始向服务器发送数据(它必须用同样的tec转换为也要转换为字节的字符串来回复我)时,它准备流(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.

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

0 个答案:

没有答案