[英]Java Socket Client sending extra bytes to device
目前我正在开发一个将二进制数据命令发送到设备面板的 Java 客户端。 我有一个奇怪的问题,如果我为每个套接字连接(一个 TCP 会话)发送一个命令,则所有命令都可以正常工作。 但是当我在一个连接(同一个 TCP 会话)中发送多个命令时,第一个命令在设备面板上完美执行,但在第二个命令中它得到两个额外的字节,值为0x01
和0x00
。 这很奇怪,最近几天我一直在尝试,但找不到答案。
我的代码:
SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
sslsocket = (SSLSocket) sslsocketfactory.createSocket(deviceIP, port);
//Output Streams
OutputStream outputStream = sslsocket.getOutputStream();
outputStream.write(command1);
outputStream.write(command2);
注意command1
和command2
是字节数组:
设备面板的日志为:
Received command: 01 01 01
Received command: 01 00 01 03 45 34 56
可能是什么问题呢? 您的建议将不胜感激。
我对带有 SSLSocket 的 Java 6 应用程序有同样的问题,服务器在两次写入之间收到了一个额外的字节。 额外字节是 SSL 连接的 CBC 保护。 如果你不想有额外的字节添加一个 java 属性 -Djsse.enableCBCProtection=false 来禁用 CBC 保护。
Java 和您的操作系统不会添加额外的字节。 否则一半的互联网将无法工作。 很明显,要么设备出现故障,要么你没有观察到它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.