有人知道客户端发送到websocket服务器的消息的编码类型是什么?
我正在研究这个网站
http://blogs.claritycon.com/blog/2012/01/18/websockets-with-rfc-6455/
从本网站教给我的内容,下面是解码代码以从服务器端的客户端获取消息!!!
public string HybiDecode(byte[] data)
{
byte firstByte = data[0];
byte secondByte = data[1];
int opcode = firstByte & 0x0F;
bool isMasked = ((firstByte & 128) == 128);
int payloadLength = secondByte & 0x7F;
if (!isMasked) { return null; } // not masked
if (opcode != 1) { return null; } // not text
List<int> mask = new List<int>();
for (int i = 2; i < 6; i++)
{
mask.Add(data[i]);
}
int payloadOffset = 6;
int dataLength = payloadLength + payloadOffset;
List<int> unmaskedPayload = new List<int>();
for (int i = payloadOffset; i < dataLength; i++)
{
int j = i - payloadOffset;
unmaskedPayload.Add(data[i] ^ mask[j % 4]);
}
return ToAscii(unmaskedPayload.Select(e => (byte)e).ToArray());
}
public string ToAscii(byte[] data)
{
System.Text.ASCIIEncoding decoder = new System.Text.ASCIIEncoding();
return decoder.GetString(data, 0, data.Length);
}
但现在我正在用C语言学习所以我必须将ToAscii()转换为C语言! 但是......从什么地方?从unicode到ASCII或从utf-8到ASCII ??? 如果你知道这件事,你能告诉我吗?
答案 0 :(得分:4)
消息以utf-8格式传输。有关详细信息,请参阅规范的section 5.6。
取决于您在服务器中使用的编码。 UTF-8在C中很容易处理(它仍然由单个nul字符终止,所以所有字符串函数都有效)所以你可能会发现在代码中使用UTF-8最简单,而不是转换为ascii / unicode。