我想做的是发送大于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.
不能真正理解为什么,但是这是我的代码,希望您可以帮我解决这个问题: