Supersocket C# 示例(對開發者的解析)。
使用 SuperSocket 開發伺服器端 Socket 應用程式並整合 IronPDF
SuperSocket C# 是開發伺服器端套接字應用程式的絕佳框架,無論您是在開發 GPS 伺服器或工業控制系統。 它支援各種網路協定實作,並確保您的套接字能有效運作。 此輕量級跨平台框架的設計具有擴充性,可針對不同的環境提供彈性。 使用 SuperSocket,您可以輕鬆地在客戶端和伺服器之間傳送資料,而且其原始碼可供自訂,以符合特定專案的需求。
這是一個開放原始碼的架構,因此任何開發人員都可以透過 GitHub 實作與存取。

IronPDF是一個功能強大的 .NET 函式庫,用於建立、編輯 PDF 文件並從 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 中開啟您的專案,並在套件管理員控制台執行下列指令:
Install-Package SuperSocket

安裝完成後,您就可以設定您的伺服器實例。 建立一個名為 appsettings.json 的新設定檔。 此檔案將定義伺服器設定,包括監聽器和通訊協定。
{
"serverOptions": {
"name": "SuperSocketServer",
"listeners": [
{
"ip": "Any",
"port": 4040
}
]
}
}
接下來,建立一個類別來設定伺服器。 此類別將從 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();
}
}
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();
}
}
Imports Microsoft.Extensions.Configuration
Imports SuperSocket
Imports SuperSocket.Server
Public Class ServerConfig
Public Async Function Configure() As Task
Dim host = SuperSocketHostBuilder.Create().UseTcpServer().UseSession(Of YourSession)().ConfigureAppConfiguration(Sub(hostCtx, configApp)
configApp.AddJsonFile("appsettings.json", [optional]:= False, reloadOnChange:= True)
End Sub).Build()
Await host.RunAsync()
End Function
End Class
一個基本的 SuperSocket C# 範例
讓我們來看看 SuperSocket C# 應用程式的基本範例。 本範例示範如何建立一個簡單的 echo 伺服器,並傳送回任何接收到的資料。
首先,定義會話類別。 本類別將處理套接字連線,並管理資料通訊。
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 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);
}
}
Imports SuperSocket
Public Class EchoSession
Inherits AppSession
Protected Overrides Async Function OnSessionStartedAsync() As ValueTask
Await MyBase.OnSessionStartedAsync()
Console.WriteLine("New session started.")
End Function
Protected Overrides Async Function OnSessionClosedAsync(ByVal e As CloseEventArgs) As ValueTask
Await MyBase.OnSessionClosedAsync(e)
Console.WriteLine("Session closed.")
End Function
Protected Overrides Async Function OnPackageReceivedAsync(ByVal package As ReadOnlyMemory(Of Byte)) As ValueTask
Await SendAsync(package)
End Function
End Class
接下來,使用 echo 會話設定並執行伺服器。
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();
}
}
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();
}
}
Imports Microsoft.Extensions.Configuration
Imports SuperSocket
Imports SuperSocket.Server
Public Class EchoServer
Public Shared Async Function Main(ByVal args() As String) As Task
Dim host = SuperSocketHostBuilder.Create().UseTcpServer().UseSession(Of EchoSession)().ConfigureAppConfiguration(Sub(hostCtx, configApp)
configApp.AddJsonFile("appsettings.json", [optional]:= False, reloadOnChange:= True)
End Sub).Build()
Await host.RunAsync()
End Function
End Class
本範例說明如何使用 SuperSocket C# 建立一個簡單的 echo 伺服器。 伺服器會監聽連線,並回應收到的任何資料。
Implementing Features of SuperSocket C#
處理多個監聽器
SuperSocket C# 支援多重監聽器,可讓您的伺服器處理不同的通訊協定和連接埠。 此功能對於建立資料擷取伺服器和 GPS 伺服器等多功能應用程式非常有用。
首先,更新您的 appsettings.json 以包含多個監聽器:
{
"serverOptions": {
"name": "MultiListenerServer",
"listeners": [
{
"ip": "Any",
"port": 4040
},
{
"ip": "Any",
"port": 5050
}
]
}
}
接下來,設定伺服器以使用這些監聽器:
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();
}
}
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();
}
}
Imports Microsoft.Extensions.Configuration
Imports SuperSocket
Imports SuperSocket.Server
Public Class MultiListenerServer
Public Shared Async Function Main(ByVal args() As String) As Task
Dim host = SuperSocketHostBuilder.Create().UseTcpServer().UseSession(Of YourSession)().ConfigureAppConfiguration(Sub(hostCtx, configApp)
configApp.AddJsonFile("appsettings.json", [optional]:= False, reloadOnChange:= True)
End Sub).Build()
Await host.RunAsync()
End Function
End Class
透過此設定,您的伺服器可以處理 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 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);
}
}
Imports System
Imports SuperSocket
Public Class BinaryDataSession
Inherits AppSession
Protected Overrides Async Function OnPackageReceivedAsync(ByVal package As ReadOnlyMemory(Of Byte)) As ValueTask
Dim data = package.ToArray()
Console.WriteLine("Received binary data: " & BitConverter.ToString(data))
Await SendAsync(data)
End Function
End Class
接下來,使用二進位資料會話設定並執行伺服器:
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();
}
}
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();
}
}
Imports Microsoft.Extensions.Configuration
Imports SuperSocket
Imports SuperSocket.Server
Public Class BinaryDataServer
Public Shared Async Function Main(ByVal args() As String) As Task
Dim host = SuperSocketHostBuilder.Create().UseTcpServer().UseSession(Of BinaryDataSession)().ConfigureAppConfiguration(Sub(hostCtx, configApp)
configApp.AddJsonFile("appsettings.json", [optional]:= False, reloadOnChange:= True)
End Sub).Build()
Await host.RunAsync()
End Function
End Class
本範例示範如何使用 SuperSocket C# 接收和傳送二進位資料。 這對需要處理二進位協定的高效能應用程式非常有用。
管理 Socket 連線
維持套接字連線對於確保可靠的通訊是非常重要的。 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 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);
}
}
Imports SuperSocket
Public Class ConnectionSession
Inherits AppSession
Protected Overrides Async Function OnSessionStartedAsync() As ValueTask
Await MyBase.OnSessionStartedAsync()
Console.WriteLine("Connection started.")
End Function
Protected Overrides Async Function OnSessionClosedAsync(ByVal e As CloseEventArgs) As ValueTask
Await MyBase.OnSessionClosedAsync(e)
Console.WriteLine("Connection closed.")
End Function
Protected Overrides Async Function OnPackageReceivedAsync(ByVal package As ReadOnlyMemory(Of Byte)) As ValueTask
Await SendAsync(package)
End Function
End Class
接下來,設定並執行伺服器的連線階段:
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();
}
}
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();
}
}
Imports Microsoft.Extensions.Configuration
Imports SuperSocket
Imports SuperSocket.Server
Public Class ConnectionServer
Public Shared Async Function Main(ByVal args() As String) As Task
Dim host = SuperSocketHostBuilder.Create().UseTcpServer().UseSession(Of ConnectionSession)().ConfigureAppConfiguration(Sub(hostCtx, configApp)
configApp.AddJsonFile("appsettings.json", [optional]:= False, reloadOnChange:= True)
End Sub).Build()
Await host.RunAsync()
End Function
End Class
此設定有助於管理套接字連線,確保您的伺服器保持穩健可靠。
建立命令列伺服器
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 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)}"));
}
}
Imports System.Text
Imports System.Threading.Tasks
Imports SuperSocket.Command
Imports SuperSocket.ProtoBase
Public Class MyCommand
Implements IAsyncCommand(Of AppSession, StringPackageInfo)
Public Async Function ExecuteAsync(ByVal session As AppSession, ByVal package As StringPackageInfo) As ValueTask
Dim commandKey = package.Key
Dim parameters = package.Parameters
Await session.SendAsync(Encoding.UTF8.GetBytes($"You said: {String.Join(" "c, parameters)}"))
End Function
End Class
接下來,設定伺服器使用指令:
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();
}
}
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();
}
}
Imports Microsoft.Extensions.Configuration
Imports SuperSocket
Imports SuperSocket.Command
Imports SuperSocket.ProtoBase
Imports SuperSocket.Server
Public Class CommandLineServer
Public Shared Async Function Main(ByVal args() As String) As Task
Dim host = SuperSocketHostBuilder.Create().UseTcpServer().UseSession(Of AppSession)().UseCommand(Of StringPackageParser)().AddCommand(Of MyCommand)().ConfigureAppConfiguration(Sub(hostCtx, configApp)
configApp.AddJsonFile("appsettings.json", [optional]:= False, reloadOnChange:= True)
End Sub).Build()
Await host.RunAsync()
End Function
End Class
本範例說明如何使用 SuperSocket C# 建立一個簡單的命令列伺服器。 這是輕量級文字型協定的理想選擇。
Integrating SuperSocket C# with IronPDF
在您的 C# 應用程式中整合 IronPDF 與 SuperSocket,可以大幅提升伺服器功能,尤其是在處理 PDF 檔案時。 讓我們來探討如何有效合併這兩個功能強大的函式庫。
IronPDF 簡介

IronPDF .NET Library 是一個多功能的 .NET 函式庫,專門用於建立、編輯 PDF 文件並從 PDF 文件中抽取內容。 無論您是否需要產生報表、發票或任何其他基於 PDF 的文件,IronPDF 都能提供簡單易用的 API 來完成這些任務。 它的主要功能是其HTML-to-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");
}
}
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");
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End Class
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>
{
}
}
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>
{
}
}
Imports System
Imports System.Net
Imports System.Text
Imports IronPdf
Imports SuperSocket.SocketBase
Imports SuperSocket.SocketBase.Protocol
Namespace SuperSocketIronPDFExample
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim appServer As New AppServer()
Dim serverConfig = New SuperSocket.SocketBase.Config.ServerConfig With {
.Name = "SuperSocketServer",
.Ip = "Any",
.Port = 2012,
.Mode = SuperSocket.SocketBase.SocketMode.Tcp,
.MaxConnectionNumber = 100
}
If Not appServer.Setup(serverConfig) Then
Console.WriteLine("Failed to set up!")
Return
End If
AddHandler appServer.NewSessionConnected, AddressOf NewSessionConnected
AddHandler appServer.NewRequestReceived, Sub(session, requestInfo)
If requestInfo.Key = "GENPDF" Then
Dim pdfDocument = CreatePdfDocument(requestInfo.Body)
Dim pdfBytes = pdfDocument.BinaryData
session.Send(pdfBytes, 0, pdfBytes.Length)
Console.WriteLine("PDF document sent to client.")
End If
End Sub
If Not appServer.Start() Then
Console.WriteLine("Failed to start!")
Return
End If
Console.WriteLine("Server is running. Press any key to stop...")
Console.ReadKey()
appServer.Stop()
End Sub
Private Shared Function CreatePdfDocument(ByVal content As String) As PdfDocument
Dim pdfRenderer = New ChromePdfRenderer()
Dim pdfDocument = pdfRenderer.RenderHtmlAsPdf(content)
Return pdfDocument
End Function
Private Shared Sub NewSessionConnected(ByVal session As AppSession)
Console.WriteLine($"New session connected: {session.SessionID}")
End Sub
End Class
Public Class AppServer
Inherits AppServer(Of AppSession, StringRequestInfo)
End Class
Public Class AppSession
Inherits AppSession(Of AppSession, StringRequestInfo)
End Class
End Namespace
此整合可讓您在 SuperSocket 伺服器內利用 IronPDF 的強大功能,實現動態 PDF 生成和高效的客戶端伺服器通訊。
結論

整合 SuperSocket 與 IronPDF 的全面功能是一個強大的組合,可建立動態、高效能的伺服器應用程式,無縫處理 PDF 的產生與處理。 透過 SuperSocket 強大的套接字伺服器框架和 IronPDF 全面的 PDF 功能,您可以開發出可擴充的多功能應用程式,滿足從資料擷取系統、遊戲伺服器到工業控制系統等各種需求。
IronPDF 提供免費試用,其授權價格從 $999 起,為您的開發專案帶來強大的功能,物超所值。 透過合併這兩個函式庫,您可以簡化伺服器有效處理複雜任務的能力,同時增強功能與效能。
常見問題解答
SuperSocket C# 的用途是什麼?
SuperSocket C# 用於開發伺服器端的 Socket 應用程式。因其高度可擴展性及支持多種網路協議,使其適合於 GPS 伺服器和工業控制系統等環境。
如何在 .NET 應用程序中將 HTML 轉換為 PDF?
你可以使用 IronPDF 的 RenderHtmlAsPdf 方法來將 HTML 字串轉換為 PDF,使用 RenderHtmlFileAsPdf 來將 HTML 文件轉換為 PDF,這些功能可以在 .NET 應用程式中使用。
如何在 .NET 專案中設置 SuperSocket 伺服器?
要在 .NET 專案中設置 SuperSocket 伺服器,你需要安裝 SuperSocket 的 NuGet 套件,使用 appsettings.json 文件進行伺服器配置,並在應用程式代碼中初始化伺服器。
IronPDF 如何增強伺服器端應用程式?
IronPDF 能夠增強伺服器端應用程式,通過提供動態 PDF 生成和處理功能,實現根據客戶端請求的實時 PDF 文檔創建和分發。
SuperSocket 能否管理多個協議監聽器?
可以,SuperSocket 可以管理多個協議監聽器,允許單一伺服器實例同時處理多種協議和端口,適合於像數據採集伺服器這樣的應用程式。
IronPDF 在 PDF 文檔處理方面具備哪些優勢?
IronPDF 提供了完善的 PDF 文檔創建、編輯和內容提取功能。適合於需要高級 PDF 文檔處理和操作的應用程式。
SuperSocket 如何處理並發的 Socket 連接?
SuperSocket 使用會話類來管理連接事件,確保在高負載下也能實現可靠的通信和穩定的伺服器性能。
是否可以將 PDF 功能集成到 SuperSocket 應用程式中?
可以,通過將 IronPDF 集成到你的 SuperSocket 應用程式中,可以增加 PDF 功能,如動態 PDF 生成和編輯,從而提升應用程式的能力。
SuperSocket 的常見用例有哪些?
SuperSocket 的常見用例包括 GPS 伺服器、工業控制系統、數據採集伺服器以及實時遊戲伺服器,這些應用受益於高效和可靠的 Socket 通信。
我如何在 SuperSocket 中處理二進制數據?
SuperSocket 通過利用會話類來高效地處理二進制數據包並發送響應,這對於需要二進制層次數據處理的應用程式來說是必不可少的。
IronPDF 支持在伺服器應用程式中進行 HTML 到 PDF 的轉換嗎?
是的,IronPDF 支持在伺服器應用中進行 HTML 到 PDF 的轉換,無縫地將 HTML 內容轉換為高質量的 PDF 文檔。



