using System;
using System.Net.WebSockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
ClientWebSocket websocket = new ClientWebSocket();
try
{
// 连接到 WebSocket 服务器
await websocket.ConnectAsync(new Uri("wss://example.com/socket"), CancellationToken.None);
Console.WriteLine("Connected to WebSocket server.");
// 发送消息
string message = "Hello, WebSocket!";
byte[] sendBuffer = Encoding.UTF8.GetBytes(message);
await websocket.SendAsync(new ArraySegment<byte>(sendBuffer), WebSocketMessageType.Text, true, CancellationToken.None);
Console.WriteLine("Message sent.");
// 接收消息
byte[] receiveBuffer = new byte[1024 * 4];
while (websocket.State == WebSocketState.Open)
{
WebSocketReceiveResult result = await websocket.ReceiveAsync(new ArraySegment<byte>(receiveBuffer), CancellationToken.None);
if (result.MessageType == WebSocketMessageType.Close)
{
await websocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closing", CancellationToken.None);
break;
}
else
{
string receivedMessage = Encoding.UTF8.GetString(receiveBuffer, 0, result.Count);
Console.WriteLine($"Received: {receivedMessage}");
}
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
finally
{
if (websocket.State != WebSocketState.Closed)
{
await websocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closing", CancellationToken.None);
}
}
}
}
连接到 WebSocket 服务器:
ClientWebSocket 类创建一个 WebSocket 客户端实例。ConnectAsync 方法连接到指定的 WebSocket 服务器(URL 示例为 wss://example.com/socket)。发送消息:
SendAsync 方法将消息发送到服务器。参数包括要发送的数据、消息类型(文本或二进制)、是否是最后一部分以及取消令牌。接收消息:
ReceiveAsync 方法循环接收来自服务器的消息,直到连接关闭。异常处理和清理:
try-catch-finally 块来捕获可能发生的异常,并确保在程序结束时正确关闭 WebSocket 连接。上一篇:c# ref
下一篇:c# substring
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站