//op - OutPutStream
byte[] textBytes = strText.getBytes("UTF-8");
op.write(0x81);
if(textBytes.length < 127)
{
op.write(textBytes.length);
}
else
if(textBytes.length >= 127 && textBytes.length <= 65536)
{
op.write(0x7E);
op.write((textBytes.length >> 8) & 255);
op.write((textBytes.length) & 255);
}
else
if(textBytes.length > 65536)
{
op.write(0x7F);
op.write((byte)((textBytes.length >> 56 ) & (byte)255));
op.write((byte)((textBytes.length >> 48 ) & (byte)255));
op.write((byte)((textBytes.length >> 40 ) & (byte)255));
op.write((byte)((textBytes.length >> 32 ) & (byte)255));
op.write((byte)((textBytes.length >> 24 ) & (byte)255));
op.write((byte)((textBytes.length >> 16 ) & (byte)255));
op.write((byte)((textBytes.length >> 8 ) & (byte)255));
op.write((byte)(textBytes.length & (byte)255));
}
op.write(textBytes);
op.flush();
如果数据小于127,则第一个if语句有效,第二个if块也有效,但是当数据超过65536个字节时,最后一个块不起作用,因为在浏览器中我得到错误:
failed: WebSocket frame length too large: 295416440622254 bytes
任何人都可以告诉我上一次if语句有什么问题吗?哪些字节不正确?