Ama*_*rsh 3 .net c# arrays buffer websocket
我有以下代码:
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));
}
Run Code Online (Sandbox Code Playgroud)
当我发送Hello我的客户端时,我可以Hello?????????????在控制台上看到。显然,这意味着我有一个 size 的缓冲区1024 * 4,其中的前几个字节由Hello. 我如何处理trim我的字符串(最终,我想将 JSON 从我的客户端传递到服务器)。
基本上约翰回答了这个
WebSocketReceiveResult.Count 属性
表示 WebSocket 接收的字节数。
在两种情况下,Count 可以为 0:
WebSocket 收到一条空消息。在这种情况下,CloseStatus 属性为 None。
WebSocket 收到来自远程端点的关闭消息。在这种情况下,CloseStatus 属性设置为 None 以外的值。
GetString(Byte[], Int32, Int32)
public virtual string GetString (byte[] bytes, int index, int count);
Run Code Online (Sandbox Code Playgroud)
在派生类中重写时,将指定字节数组中的字节序列解码为字符串。
- bytes
Byte[]包含要解码的字节序列的字节数组。- index
Int32要解码的第一个字节的索引。- count
Int32要解码的字节数。
所以你需要这样的东西
Console.WriteLine("New message received : "+ Encoding.UTF8.GetString(buffer,0,Result.Count));
Run Code Online (Sandbox Code Playgroud)
然而,它是一个很大的然而。还有更多错误,我会认真建议获得一个好的WebSocket教程和一些防弹(典型)设计
| 归档时间: |
|
| 查看次数: |
1610 次 |
| 最近记录: |