我正在编写一个服务器程序,我正在从网络套接字读取UTF-8编码的字节流并连续解释这些字符。
对于需要多个字节来表示的字符,有时我只是接收套接字上字符的第一个字节,程序会将此字节解释为无效字符。
例如,客户端在代码下运行: -
String s = "Cañ";
byte[] b = s.getBytes("UTF-8");
//sending first three bytes
send(b, 0, 3)); //send(byte[], offset, length)
//sending last byte
send(b, 3, 1);
当服务器收到前三个字节时,它会将它们解码为Ca?。
如何检测服务器上的字符边界?
给出的代码是为了产生问题。我相信这个角色有时会被TCP打破。
答案 0 :(得分:0)
TCP协议可靠,如果网络卡塞,您有时可能会丢失一些数据包。你可以自己设计一个协议。通过设置协议数据框的第一个和最后一个标签,你可以检查你是否轻松收到了完整的数据。