以下是一個簡單的C# WebSocket代碼示例:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace WebSocketExample
{
    class Program
    {
        static async Task Main(string[] args)
        {
            // 建立WebSocket服務器
            var listener = new TcpListener(IPAddress.Any, 8080);
            listener.Start();
            Console.WriteLine("WebSocket Server started on port 8080");

            while (true)
            {
                // 等待客戶端連接
                var client = await listener.AcceptTcpClientAsync();
                Console.WriteLine($"Client connected from {client.Client.RemoteEndPoint}");

                // 開始處理客戶端請求
                Task.Run(async () =>
                {
                    // 讀取客戶端的HTTP請求
                    var stream = client.GetStream();
                    var buffer = new byte[1024];
                    var bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length);
                    var request = Encoding.UTF8.GetString(buffer, 0, bytesRead);
                    Console.WriteLine($"Request:\n{request}");

                    // 解析HTTP請求,確定是否為WebSocket請求
                    if (request.Contains("Upgrade: websocket"))
                    {
                        // 回應WebSocket請求
                        var response = "HTTP/1.1 101 Switching Protocols\r\n" +
                                       "Connection: Upgrade\r\n" +
                                       "Upgrade: websocket\r\n" +
                                       "\r\n";
                        var responseBytes = Encoding.UTF8.GetBytes(response);
                        await stream.WriteAsync(responseBytes, 0, responseBytes.Length);

                        // 開始處理WebSocket連接
                        var webSocket = new WebSocket(client);
                        await webSocket.ProcessWebSocketRequest();
                    }
                    else
                    {
                        // 不是WebSocket請求,關閉連接
                        client.Close();
                    }
                });
            }
        }
    }

    public class WebSocket
    {
        private readonly TcpClient _client;
        private readonly NetworkStream _stream;

        public WebSocket(TcpClient client)
        {
            _client = client;
            _stream = _client.GetStream();
        }

        public async Task ProcessWebSocketRequest()
        {
            // 讀取WebSocket數據
            var buffer = new byte[1024];
            var bytesRead = await _stream.ReadAsync(buffer, 0, buffer.Length);
            var data = new byte[bytesRead - 6];
            Array.Copy(buffer, 6, data, 0, bytesRead - 6);
            var message = Encoding.UTF8.GetString(data);
            Console.WriteLine($"Received message: {message}");

            // 發送WebSocket數據
            message = "Hello from the server!";
            data = Encoding.UTF8.GetBytes(message);
            await _stream.WriteAsync(new byte[] { 0x81, (byte)data.Length }, 0, 2);
            await _stream.WriteAsync(data, 0, data.Length);

            // 等待下一條WebSocket數據
            await ProcessWebSocketRequest();
        }
    }
}

這個代碼示例演示了如何使用C#建立WebSocket服務器,接受客戶端的WebSocket連接,並處理WebSocket數據。在這個示例中,當客戶端連接到WebSocket服務器時,服務器會回應一個HTTP 101 Switching Protocols消息,表示它接受WebSocket協議。然後,服務器會開始處理WebSocket連接,接受來自客戶端的數據,並回應一些數據。注意,這個示例只是一個簡單的WebSocket實現,實際的WebSocket服務器可能需要更複雜的處理邏輯

websocket的C#代碼實現

原文地址: https://www.cveoy.top/t/topic/fr9w 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录