Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 当客户端向websocket服务器发送消息时,编码类型是什么?_Html_Websocket - Fatal编程技术网

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

Html 当客户端向websocket服务器发送消息时,编码类型是什么?,html,websocket,Html,Websocket,有人知道客户端发送给websocket服务器的消息的编码类型是什么吗 我正在研究这个网站 根据这个网站教给我的,下面是从服务器端的客户端获取消息的解码代码 public string HybiDecode(byte[] data) { byte firstByte = data[0]; byte secondByte = data[1]; int opcode = firstByte & 0x0F; bool isMasked = ((firstByte

有人知道客户端发送给websocket服务器的消息的编码类型是什么吗

我正在研究这个网站

根据这个网站教给我的,下面是从服务器端的客户端获取消息的解码代码

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);
}
公共字符串代码(字节[]数据)
{
字节firstByte=数据[0];
字节secondByte=数据[1];
int操作码=firstByte&0x0F;
bool ismask=((firstByte&128)=128);
int payloadLength=secondByte&0x7F;
如果(!ismask){return null;}//未屏蔽
if(操作码!=1){return null;}//非文本
列表掩码=新列表();
对于(int i=2;i<6;i++)
{
添加(数据[i]);
}
int payloadOffset=6;
int dataLength=有效载荷长度+有效载荷偏移量;
List unmaskedPayload=新列表();
对于(int i=payloadOffset;i(byte)e.ToArray());
}
公共字符串ToAscii(字节[]数据)
{
System.Text.asciencoding解码器=新的System.Text.asciencoding();
返回解码器.GetString(数据,0,数据.长度);
}
但是现在我在学习C语言,所以我必须把ToAscii()转换成C语言! 但是来自什么?从unicode到ASCII还是从utf-8到ASCII???
如果你知道这件事,你能告诉我吗?

消息是以utf-8传输的。有关详细信息,请参见规范的第1部分


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

我使用的是Ubuntu linux,据我所知,这就是UTF-8系统。你的意思是我不需要任何转换来查看服务器端的数据?p、 s:我得到了一点声誉,可以提高箭谢谢你今天的友好回答!!