using System;
using System.Net.WebSockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
class Program
{
private static async Task StartWebSocketClient()
{
// 创建一个客户端 WebSocket
ClientWebSocket webSocket = new ClientWebSocket();
// 连接到指定的 WebSocket 服务器
await webSocket.ConnectAsync(new Uri("ws://example.com/socket"), CancellationToken.None);
Console.WriteLine("连接已建立");
try
{
// 准备接收数据的缓冲区
byte[] receiveBuffer = new byte[1024 * 4];
WebSocketReceiveResult receiveResult = null;
// 持续接收消息
while (webSocket.State == WebSocketState.Open)
{
receiveResult = await webSocket.ReceiveAsync(new ArraySegment<byte>(receiveBuffer), CancellationToken.None);
if (receiveResult.MessageType == WebSocketMessageType.Close)
{
await webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closing", CancellationToken.None);
break;
}
else
{
// 将接收到的字节数组转换为字符串并输出
string receivedMessage = Encoding.UTF8.GetString(receiveBuffer, 0, receiveResult.Count);
Console.WriteLine($"收到消息: {receivedMessage}");
}
}
}
catch (Exception ex)
{
Console.WriteLine($"发生错误: {ex.Message}");
}
finally
{
// 确保 WebSocket 关闭
if (webSocket != null && webSocket.State != WebSocketState.Closed)
{
await webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closing", CancellationToken.None);
}
}
}
static async Task Main(string[] args)
{
await StartWebSocketClient();
}
}
ClientWebSocket
类来创建一个 WebSocket 客户端实例。ConnectAsync
方法连接到指定的 WebSocket 服务器(URL)。ReceiveAsync
方法持续接收来自服务器的消息,并将接收到的字节数组转换为字符串进行输出。CloseAsync
方法关闭 WebSocket 连接。希望这段代码和解释能帮助你理解如何在 C# 中实现 WebSocket 客户端。
上一篇:rabbitmq c#
下一篇:c#窗体控件随窗体变大
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站