当客户端向websocket服务器发送消息时,什么是编码类型



有人知道客户端发送到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???如果你知道这件事,你能告诉我吗???

消息以utf-8的形式传输。详见本规范第5.6节。

这取决于您在服务器中使用什么编码。UTF-8在C中很容易处理(它仍然以一个nul字符结尾,因此所有字符串函数都可以工作),因此您可能会发现在代码中使用UTF-8而不转换为ascii/unicode是最容易的。

相关内容

  • 没有找到相关文章

最新更新