溫馨提示×

C# websocketserver如何發(fā)送文件

c#
小樊
108
2024-07-16 15:49:47
欄目: 編程語言

在C#中,可以通過WebSocket來發(fā)送文件。下面是一個簡單的示例代碼,演示如何通過WebSocket發(fā)送文件:

using System;
using System.IO;
using System.Net;
using System.Net.WebSockets;
using System.Threading;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        HttpListener listener = new HttpListener();
        listener.Prefixes.Add("http://localhost:8080/");
        listener.Start();

        Console.WriteLine("Listening for incoming connections...");

        while (true)
        {
            HttpListenerContext context = await listener.GetContextAsync();

            if (context.Request.IsWebSocketRequest)
            {
                HttpListenerWebSocketContext webSocketContext = await context.AcceptWebSocketAsync(null);

                using (WebSocket webSocket = webSocketContext.WebSocket)
                {
                    string filePath = "path/to/your/file.txt";
                    using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
                    {
                        byte[] buffer = new byte[1024];
                        int bytesRead = 0;

                        while ((bytesRead = await fileStream.ReadAsync(buffer, 0, buffer.Length)) > 0)
                        {
                            await webSocket.SendAsync(new ArraySegment<byte>(buffer, 0, bytesRead), WebSocketMessageType.Binary, true, CancellationToken.None);
                        }
                    }
                }
            }
            else
            {
                context.Response.StatusCode = 400;
                context.Response.Close();
            }
        }
    }
}

在上面的代碼中,我們創(chuàng)建了一個簡單的HttpListener來監(jiān)聽指定的端口,并處理WebSocket請求。當(dāng)有WebSocket連接時,我們打開要發(fā)送的文件,并將其內(nèi)容通過WebSocket發(fā)送給客戶端。請確保替換filePath變量的值為您要發(fā)送的文件的實際路徑。

請注意,上面的示例僅演示了如何從文件中讀取數(shù)據(jù)并通過WebSocket發(fā)送。在實際應(yīng)用中,您可能需要添加更多的錯誤處理和邏輯來處理各種情況。

0