代码之家  ›  专栏  ›  技术社区  ›  Amarsh

WebSocket将字节[]转换为字符串

  •  1
  • Amarsh  · 技术社区  · 6 年前

    我有以下代码:

                Console.WriteLine("New Socket connection opened");
                var buffer = new byte[1024 * 4];
                WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
                while (!result.CloseStatus.HasValue)
                {
                    Console.WriteLine("New message received : "+ Encoding.UTF8.GetString(buffer));
                }
    

    当我发送 Hello 我的当事人,我看得出来 Hello????????????? 在控制台上。显然,这意味着我有一个缓冲区的大小 1024 * 4 . 我该怎么做 trim

    1 回复  |  直到 6 年前
        1
  •  5
  •   TheGeneral    6 年前

    基本上 John

    WebSocketReceiveResult.Count Property

    指示WebSocket接收的字节数。

    计数在两种情况下可以为0:

    WebSocket收到一条空消息。在本例中,CloseStatus 属性为“无”。

    WebSocket从远程终结点接收到关闭消息。在 在这种情况下,CloseStatus属性设置为None以外的值。

    GetString(Byte[], Int32, Int32)

    public virtual string GetString (byte[] bytes, int index, int count);
    

    在派生类中重写时,从 将指定的字节数组转换为字符串。

    • 字节 Byte[] 包含要解码的字节序列的字节数组。
    • 指数 Int32
    • 计数 国际32 要解码的字节数。

    所以你需要这样的东西

    Console.WriteLine("New message received : "+ Encoding.UTF8.GetString(buffer,0,Result.Count));
    

    然而,这是一个大问题。有更多的错误,我会认真地建议得到一个好的 WebSocket 教程和一些防弹(典型)设计