C# websocketserver与客户端通信

   2024-10-06 5640
核心提示:要实现C# WebSocket服务器与客户端通信,您可以使用.NET的WebSocket库来创建WebSocket服务器和客户端。以下是一个简单的示例代码

要实现C# WebSocket服务器与客户端通信,您可以使用.NET的WebSocket库来创建WebSocket服务器和客户端。以下是一个简单的示例代码,演示了如何在C#中实现WebSocket服务器和客户端之间的通信:

WebSocket服务器端代码示例:

using System;using System.Net;using System.Net.WebSockets;using System.Threading;using System.Threading.Tasks;class Program{    static async Task Main(string[] args)    {        var listener = new HttpListener();        listener.Prefixes.Add("http://localhost:8080/");        listener.Start();        while (true)        {            var context = await listener.GetContextAsync();            if (context.Request.IsWebSocketRequest)            {                ProcessWebSocketRequest(context);            }            else            {                context.Response.StatusCode = 400;                context.Response.Close();            }        }    }    static async Task ProcessWebSocketRequest(HttpListenerContext context)    {        var webSocketContext = await context.AcceptWebSocketAsync(null);        var webSocket = webSocketContext.WebSocket;        var buffer = new byte[1024];        WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);        while (!result.CloseStatus.HasValue)        {            var message = System.Text.Encoding.UTF8.GetString(buffer, 0, result.Count);            Console.WriteLine($"Received message: {message}");            await webSocket.SendAsync(new ArraySegment<byte>(buffer, 0, result.Count), result.MessageType, result.EndOfMessage, CancellationToken.None);            result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);        }        await webSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None);    }}

WebSocket客户端代码示例:

using System;using System.Net.WebSockets;using System.Text;using System.Threading;using System.Threading.Tasks;class Program{    static async Task Main(string[] args)    {        var webSocket = new ClientWebSocket();        await webSocket.ConnectAsync(new Uri("ws://localhost:8080/"), CancellationToken.None);        var input = Console.ReadLine();        var buffer = Encoding.UTF8.GetBytes(input);        await webSocket.SendAsync(new ArraySegment<byte>(buffer), WebSocketMessageType.Text, true, CancellationToken.None);        var receiveBuffer = new byte[1024];        var result = await webSocket.ReceiveAsync(new ArraySegment<byte>(receiveBuffer), CancellationToken.None);        var message = Encoding.UTF8.GetString(receiveBuffer, 0, result.Count);        Console.WriteLine($"Received message: {message}");        await webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closed by client", CancellationToken.None);    }}

这是一个简单的示例,演示了如何在C#中实现WebSocket服务器和客户端之间的通信。您可以根据自己的需求和业务逻辑进一步扩展和修改这段代码。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号