IRONSOFTWAREHOME
開發者更新

Supersocket C# 示例(對開發者的解析)。

Jacob Mellor,首席技術官 @ Team Iron
Jacob Mellor
Updated: 2026年4月21日

使用SuperSocket開發伺服器端套接字應用程式並整合IronPDF

SuperSocket C# 是一個優秀的框架,可用於開發伺服器端套接字應用程式,無論您是在開發GPS伺服器還是工業控制系統。 它支持各種網路協議的實現,確保您的套接字工作高效。 這個輕量級跨平台框架被設計為可擴展,為不同環境提供靈活性。 使用SuperSocket,您可以輕鬆地在客戶端和伺服器之間傳送資料,其源程式碼可供自訂以滿足特定專案需求。

它是開源框架,因此任何開發者都可以通過GitHub實現和存取它。

SuperSocket C#範例(開發者適用的核心概念):圖1 - SuperSocket GitHub頁面

IronPDF 是一個強大的.NET程式庫,用於建立、編輯和提取PDF文件的內容。 專為需要在應用程式中整合PDF功能的開發者而設計。 IronPDF支持多種功能,如從HTML生成PDF、合併PDF以及從PDF中提取文字和圖像。

SuperSocket和IronPDF可以共同驅動複雜的伺服器端應用程式。 它們提供廣泛的功能,以滿足現代.NET開發者的需求。 無論您是在構建資料採集伺服器,還是一個需要即時聊天應用程式的強大游戲伺服器,這些程式庫都是完美選擇。

Getting Started with SuperSocket C#

在.NET專案中設定SuperSocket C#

要開始使用SuperSocket C#,您需要設定您的.NET專案。 首先,安裝SuperSocket的NuGet封裝。 在Visual Studio中打開您的專案,然後在封裝管理器控制台中運行以下命令:

PM > Install-Package SuperSocket

SuperSocket C#範例(開發者適用的核心概念):圖2 - 安裝SuperSocket時的控制台輸出

安裝完成後,您可以配置您的伺服器實例。 建立一個名為appsettings.json的新配置文件。 此文件將定義伺服器設置,包括監聽器和協議。

{
  "serverOptions": {
    "name": "SuperSocketServer",
    "listeners": [
      {
        "ip": "Any",
        "port": 4040
      }
    ]
  }
}
JSON

接下來,建立一個類來配置伺服器。 這個類將從appsettings.json讀取設置並初始化伺服器實例。

using Microsoft.Extensions.Configuration;
using SuperSocket;
using SuperSocket.Server;

public class ServerConfig
{
    public async Task Configure()
    {
        var host = SuperSocketHostBuilder.Create()
            .UseTcpServer()
            .UseSession<YourSession>()
            .ConfigureAppConfiguration((hostCtx, configApp) =>
            {
                configApp.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
            })
            .Build();
        await host.RunAsync();
    }
}

一個基本的SuperSocket C#範例

讓我們看看一個基本的SuperSocket C#應用程式範例。 這個範例展示了如何建立一個簡單的回應伺服器,將接收到的任何資料回傳。

首先,定義會話類。 這個類將處理套接字連接並管理資料通信。

using SuperSocket;

public class EchoSession : AppSession
{
    protected override async ValueTask OnSessionStartedAsync()
    {
        await base.OnSessionStartedAsync();
        Console.WriteLine("New session started.");
    }

    protected override async ValueTask OnSessionClosedAsync(CloseEventArgs e)
    {
        await base.OnSessionClosedAsync(e);
        Console.WriteLine("Session closed.");
    }

    protected override async ValueTask OnPackageReceivedAsync(ReadOnlyMemory<byte> package)
    {
        await SendAsync(package);
    }
}

接下來,使用回應會話配置並運行伺服器。

using Microsoft.Extensions.Configuration;
using SuperSocket;
using SuperSocket.Server;

public class EchoServer
{
    public static async Task Main(string[] args)
    {
        var host = SuperSocketHostBuilder.Create()
            .UseTcpServer()
            .UseSession<EchoSession>()
            .ConfigureAppConfiguration((hostCtx, configApp) =>
            {
                configApp.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
            })
            .Build();
        await host.RunAsync();
    }
}

這個範例展示了如何使用SuperSocket C#建立一個簡單的回應伺服器。 伺服器監聽連接並回應收集的任何資料。

Implementing Features of SuperSocket C#

處理多個監聽器

SuperSocket C#支持多個監聽器,允許您的伺服器處理不同的協議和端口。 此功能對於建立多功能的應用程式如資料採集伺服器和GPS伺服器非常有用。

首先,更新您的appsettings.json以包含多個監聽器:

{
  "serverOptions": {
    "name": "MultiListenerServer",
    "listeners": [
      {
        "ip": "Any",
        "port": 4040
      },
      {
        "ip": "Any",
        "port": 5050
      }
    ]
  }
}
JSON

接下來,配置伺服器以使用這些監聽器:

using Microsoft.Extensions.Configuration;
using SuperSocket;
using SuperSocket.Server;

public class MultiListenerServer
{
    public static async Task Main(string[] args)
    {
        var host = SuperSocketHostBuilder.Create()
            .UseTcpServer()
            .UseSession<YourSession>()
            .ConfigureAppConfiguration((hostCtx, configApp) =>
            {
                configApp.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
            })
            .Build();
        await host.RunAsync();
    }
}

通過此設置,您的伺服器可以處理4040和5050端口的連接。此能力對於需要管理多種網路協議的應用程式至關重要。

實現二進制資料處理

SuperSocket C#在處理二進制資料方面非常高效。 這對於要求二進制級別相容性的應用程式如工業控制系統非常重要。

首先,定義一個處理二進制資料的會話類:

using System;
using SuperSocket;

public class BinaryDataSession : AppSession
{
    protected override async ValueTask OnPackageReceivedAsync(ReadOnlyMemory<byte> package)
    {
        var data = package.ToArray();
        Console.WriteLine("Received binary data: " + BitConverter.ToString(data));
        await SendAsync(data);
    }
}

接下來,使用二進制資料會話配置並運行伺服器:

using Microsoft.Extensions.Configuration;
using SuperSocket;
using SuperSocket.Server;

public class BinaryDataServer
{
    public static async Task Main(string[] args)
    {
        var host = SuperSocketHostBuilder.Create()
            .UseTcpServer()
            .UseSession<BinaryDataSession>()
            .ConfigureAppConfiguration((hostCtx, configApp) =>
            {
                configApp.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
            })
            .Build();
        await host.RunAsync();
    }
}

這個範例展示了如何使用SuperSocket C#接收和發送二進制資料。 適用於需要處理二進制協議的高效性能應用程式。

管理套接字連接

維護套接字連接對於確保可靠的通信至關重要。 SuperSocket C#簡化了這一過程。

首先,定義一個管理套接字連接的會話類:

using SuperSocket;

public class ConnectionSession : AppSession
{
    protected override async ValueTask OnSessionStartedAsync()
    {
        await base.OnSessionStartedAsync();
        Console.WriteLine("Connection started.");
    }

    protected override async ValueTask OnSessionClosedAsync(CloseEventArgs e)
    {
        await base.OnSessionClosedAsync(e);
        Console.WriteLine("Connection closed.");
    }

    protected override async ValueTask OnPackageReceivedAsync(ReadOnlyMemory<byte> package)
    {
        await SendAsync(package);
    }
}

接下來,使用連接會話配置並運行伺服器:

using Microsoft.Extensions.Configuration;
using SuperSocket;
using SuperSocket.Server;

public class ConnectionServer
{
    public static async Task Main(string[] args)
    {
        var host = SuperSocketHostBuilder.Create()
            .UseTcpServer()
            .UseSession<ConnectionSession>()
            .ConfigureAppConfiguration((hostCtx, configApp) =>
            {
                configApp.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
            })
            .Build();
        await host.RunAsync();
    }
}

此設置有助於管理套接字連接,確保您的伺服器保持強大和可靠。

建立命令行伺服器

SuperSocket C#支持建立命令行伺服器。 此功能對於需要簡單文字協議的應用程式很有用。

首先,定義一個處理文字指令的命令類:

using System.Text;
using System.Threading.Tasks;
using SuperSocket.Command;
using SuperSocket.ProtoBase;

public class MyCommand : IAsyncCommand<AppSession, StringPackageInfo>
{
    public async ValueTask ExecuteAsync(AppSession session, StringPackageInfo package)
    {
        var commandKey = package.Key;
        var parameters = package.Parameters;
        await session.SendAsync(Encoding.UTF8.GetBytes($"You said: {string.Join(' ', parameters)}"));
    }
}

接下來,配置伺服器以使用該命令:

using Microsoft.Extensions.Configuration;
using SuperSocket;
using SuperSocket.Command;
using SuperSocket.ProtoBase;
using SuperSocket.Server;

public class CommandLineServer
{
    public static async Task Main(string[] args)
    {
        var host = SuperSocketHostBuilder.Create()
            .UseTcpServer()
            .UseSession<AppSession>()
            .UseCommand<StringPackageParser>()
            .AddCommand<MyCommand>()
            .ConfigureAppConfiguration((hostCtx, configApp) =>
            {
                configApp.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
            })
            .Build();
        await host.RunAsync();
    }
}

這個範例展示了如何使用SuperSocket C#建立簡單的命令行伺服器。 這對於輕量級的文字協議是理想的。

Integrating SuperSocket C# with IronPDF

在您的C#應用程式中整合IronPDF與SuperSocket可以顯著增強伺服器的能力,特別是在處理PDF文件方面。 讓我們探討如何有效合併這兩個強大的程式庫。

IronPDF介紹

IronPDF網頁

IronPDF .NET程式庫是一個多功能的.NET程式庫,專用於建立、編輯和提取PDF文件的內容。 無論您需要生成報告、發票或任何其他以PDF為基礎的文件,IronPDF提供了一個易於使用的API來完成這些任務。 其主要特點是其HTML轉PDF轉換能力。 這是一個對於開發者來說是很好的工具,他們希望將PDF功能整合到應用程式中而不必處理複雜的PDF規範。

IronPDF在HTML到PDF轉換方面表現出色,確保精確保留原始佈局和樣式。 它特別適合從基於網頁的內容建立PDF,例如報告、發票和文件。 IronPDF支持HTML文件、URL和原始HTML字串,可輕鬆製作高質量的PDF文件。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}

Use Case of Merging IronPDF with SuperSocket C#

假設您有一個使用SuperSocket構建的伺服器,需要處理客戶端動態生成和發送PDF文件的請求。 通過整合IronPDF,您的伺服器可以處理這些請求,動態建立PDF並無縫地發送回客戶端。

使用範例程式碼

這裡是一個完整的程式碼範例,展示了如何將IronPDF與SuperSocket整合。 這個範例設置了一個簡單的SuperSocket伺服器,監聽客戶端連接,處理生成PDF的請求,並將生成的PDF回傳給客戶端。

using System;
using System.Net;
using System.Text;
using IronPdf;
using SuperSocket.SocketBase;
using SuperSocket.SocketBase.Protocol;

namespace SuperSocketIronPDFExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var appServer = new AppServer();
            var serverConfig = new SuperSocket.SocketBase.Config.ServerConfig
            {
                Name = "SuperSocketServer",
                Ip = "Any",
                Port = 2012,
                Mode = SuperSocket.SocketBase.SocketMode.Tcp,
                MaxConnectionNumber = 100,
            };

            if (!appServer.Setup(serverConfig))
            {
                Console.WriteLine("Failed to set up!");
                return;
            }

            appServer.NewSessionConnected += NewSessionConnected;
            appServer.NewRequestReceived += (session, requestInfo) =>
            {
                if (requestInfo.Key == "GENPDF")
                {
                    var pdfDocument = CreatePdfDocument(requestInfo.Body);
                    var pdfBytes = pdfDocument.BinaryData;
                    session.Send(pdfBytes, 0, pdfBytes.Length);
                    Console.WriteLine("PDF document sent to client.");
                }
            };

            if (!appServer.Start())
            {
                Console.WriteLine("Failed to start!");
                return;
            }

            Console.WriteLine("Server is running. Press any key to stop...");
            Console.ReadKey();
            appServer.Stop();
        }

        private static PdfDocument CreatePdfDocument(string content)
        {
            var pdfRenderer = new ChromePdfRenderer();
            var pdfDocument = pdfRenderer.RenderHtmlAsPdf(content);
            return pdfDocument;
        }

        private static void NewSessionConnected(AppSession session)
        {
            Console.WriteLine($"New session connected: {session.SessionID}");
        }
    }

    public class AppServer : AppServer<AppSession, StringRequestInfo>
    {
    }

    public class AppSession : AppSession<AppSession, StringRequestInfo>
    {
    }
}

這一整合使您可以在SuperSocket伺服器中利用IronPDF的強大功能,實現動態PDF生成和高效的客戶端與伺服器通信。

結論

將SuperSocket與IronPDF的綜合功能整合是一個強大的組合,可建立動態、高性能的伺服器應用程式,無縫處理PDF生成和處理。 通過SuperSocket強大的套接字伺服器框架和IronPDF全方位的PDF功能,您可以開發可擴展且多功能的應用程式,以滿足各種需求,從資料採集系統到游戲伺服器和工業控制系統。

IronPDF提供免費試用,其授權價格從$999開始,為您的開發專案帶來的廣泛功能提供了絕佳的價值。 通過合併這兩個程式庫,您可以簡化伺服器處理複雜任務的能力,增強功能和性能。

Jacob Mellor,首席技術官 @ Team Iron
首席技術官

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰。

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

OR
bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
預訂您的免費現場演示
Booking Badge

受到全球數百萬工程師的信任

Iron Software的客戶標誌
獲取您的無義務諮詢
填寫以下表格或電子郵件sales@ironsoftware.com
您的詳細資訊將始終保密。
受到全球數百萬工程師的信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰。
無需信用卡或帳戶建立
C# 用於PDF的NuGet程式庫
使用NuGet安裝

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解決方案資源管理器,右鍵點選參考,管理NuGet包
  2. 選擇瀏覽並搜尋"IronPdf"
  3. 選擇套件並安裝
C# PDF DLL
下載DLL

版本: 2026.9

或者點擊此處下載Windows安裝程式。

  1. 下載並解壓IronPDF到類似~/Libs的位置,位於您的解決方案目錄中
  2. 在Visual Studio解決方案資源管理器,右鍵點選參考。選擇瀏覽,"IronPdf.dll"

授權從$999起