2012-03-18 12 views
3

誰かが、クライアントが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); 
} 

私はToAscii()をC言語に変換する必要があるため、現在はC言語で学習しています。 ...何から?ユニコードからASCIIへ、またはutf-8からASCIIへ??? これについて知っていれば教えていただけますか?

答えて

4

メッセージはutf-8として送信されます。詳細については、仕様のsection 5.6を参照してください。

あなたのサーバー内で使用するエンコーディングはあなた次第です。 UTF-8はC言語で処理するのが簡単です(これは1文字で終了しますので、すべての文字列関数が動作します)ので、UTF-8をコード内で使用し、ascii/unicodeに変換しない方が簡単です。

+0

私はUbuntu Linuxを使用しています。私はこれがutf-8システムだと知っています。 あなたはサーバー側のデータを見るために変換が必要ないということですか? p.s:私は矢を上げることができる少しの評判を得た! ^^今日あなたの多くの種類の答えに感謝します! – nathan

+0

私は終わった!ありがとうございました!! – nathan

関連する問題