C#WebSocket解码

时间:2016-12-26 23:58:05

标签: c# websocket decoding

我正在尝试用C#创建一个WebSocketServer。一般来说它工作正常,但我在解码过程中遇到问题。

这是我的解码功能:

public static byte[] EncodeMessageToSend(string message)
    {
        byte[] response;
        byte[] bytesRaw = Encoding.UTF8.GetBytes(message);
        byte[] frame = new byte[10];

        Int32 indexStartRawData = -1;
        Int32 length = bytesRaw.Length;

        frame[0] = (byte)129;
        if (length <= 125)
        {
            frame[1] = (byte)length;
            indexStartRawData = 2;
        }
        else if (length >= 126 && length <= 65535)
        {
            frame[1] = (byte)126;
            frame[2] = (byte)((length >> 8) & 255);
            frame[3] = (byte)(length & 255);
            indexStartRawData = 4;
        }
        else
        {
            frame[1] = (byte)127;
            frame[2] = (byte)((length >> 56) & 255);
            frame[3] = (byte)((length >> 48) & 255);
            frame[4] = (byte)((length >> 40) & 255);
            frame[5] = (byte)((length >> 32) & 255);
            frame[6] = (byte)((length >> 24) & 255);
            frame[7] = (byte)((length >> 16) & 255);
            frame[8] = (byte)((length >> 8) & 255);
            frame[9] = (byte)(length & 255);

            indexStartRawData = 10;
        }

        response = new byte[indexStartRawData + length];

        Int32 i, reponseIdx = 0;

        //Add the frame bytes to the reponse
        for (i = 0; i < indexStartRawData; i++)
        {
            response[reponseIdx] = frame[i];
            reponseIdx++;
        }

        //Add the data bytes to the response
        for (i = 0; i < length; i++)
        {
            response[reponseIdx] = bytesRaw[i];
            reponseIdx++;
        }

        return response;
    }

我从thread

那里得到了

有时候它会正确解码,但之后就会开始做一些奇怪的事情。它会附加一些问号或未定义的字符。我也尝试过其他一些解码功能,但是它们也没用。

我希望有人可以帮助我。

电贺 烫发

0 个答案:

没有答案