C#WebSocket解码
我正在尝试用C#制作一个WebSocketServer。一般来说,它工作得很好,但我想我在解码过程中遇到了一个问题 这是我的解码功能:C#WebSocket解码,c#,websocket,decoding,C#,Websocket,Decoding,我正在尝试用C#制作一个WebSocketServer。一般来说,它工作得很好,但我想我在解码过程中遇到了一个问题 这是我的解码功能: public static byte[] EncodeMessageToSend(string message) { byte[] response; byte[] bytesRaw = Encoding.UTF8.GetBytes(message); byte[] frame = new byte[10]
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;
}
公共静态字节[]EncodeMessageToSend(字符串消息)
{
字节[]响应;
byte[]bytesRaw=Encoding.UTF8.GetBytes(消息);
字节[]帧=新字节[10];
Int32 indexStartRawData=-1;
Int32长度=字节原始长度;
帧[0]=(字节)129;
如果(长度=126&&length>8)&255);
帧[3]=(字节)(长度为255);
indexStartRawData=4;
}
其他的
{
帧[1]=(字节)127;
帧[2]=(字节)((长度>>56)和255);
帧[3]=(字节)((长度>>48)和255);
帧[4]=(字节)((长度>>40)和255);
帧[5]=(字节)((长度>>32)和255);
帧[6]=(字节)((长度>>24)和255);
帧[7]=(字节)((长度>>16)和255);
帧[8]=(字节)((长度>>8)和255);
帧[9]=(字节)(长度为255);
indexStartRawData=10;
}
响应=新字节[indexStartRawData+长度];
Int32 i,reponseIdx=0;
//将帧字节添加到响应中
对于(i=0;i
我是从这里得到的
有时它能正确解码,但随后它开始做奇怪的事情。它附加了一些问号或未定义的字符。我还尝试了一些其他的解码功能,但效果不太好
我希望有人能帮我
问候
马塞尔