Java 写入字节放入CR
我的java微服务在套接字中写入:Java 写入字节放入CR,java,sockets,Java,Sockets,我的java微服务在套接字中写入: serverOutput.writeBytes(gson.toJson(productFound.toString()); System.out.println(gson.toJson(productFound.toString()); println显示正确的内容,这正是我所期望的: { "id": "S10_1678", "name": "1969 Harley Davidson Ultimate Chopper", "price": "48
serverOutput.writeBytes(gson.toJson(productFound.toString());
System.out.println(gson.toJson(productFound.toString());
println显示正确的内容,这正是我所期望的:
{
"id": "S10_1678",
"name": "1969 Harley Davidson Ultimate Chopper",
"price": "48.81"
}
但当我在节点服务器中接收到它,并在发送到浏览器之前打印它时
client.on('data',(data)=>{
log(data.toString());
res.end(data.toString());
});
似乎已经注入了CR,这使得JSON格式不再正确。console.log会打印我:
{
"id": "S10_16
78",
"name": "1969 Harley Davidson Ultimate Chopper",
"price": "48.81"
}
因此,浏览器只接收
{
并告诉我Json格式不正确。您是否尝试嗅探网络流量以验证writeBytes()
传输的原始字节中是否存在CR?与其使用writeBytes()
,不如尝试将字符串
编码为字节[]
使用String.getBytes()
数组,然后使用write()发送字节[]
相反。这将帮助您消除关于CR是否被注入的任何疑问。可能只是接收端上的一个错误。谢谢!我这样做了,并且成功了。我仍然无法理解,为什么使用write从字符串中获取字节有效?为什么writeByte添加了回车符?是否使用网络嗅探进行验证r、 像Wireshark或Fiddler一样,这就是实际注入CR的writeBytes()
只需截断字符串中每个字符的顶部8位,并按原样传输底部8位。CR是byte0x0D
,您的字符串
是否可能有一个类似0x\0D
的字符?