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

IronPDF是一個功能強大的 .NET 函式庫,用於建立、編輯 PDF 文件並從 PDF 文件中抽取內容。 本手冊專為需要將 PDF 功能整合至其應用程式的開發人員所設計。 IronPDF 支援各種功能,例如從 HTML 產生 PDF、合併 PDF 以及從 PDF 擷取文字和圖片。
SuperSocket 和 IronPDF 一起可以為複雜的伺服器端應用程式提供動力。 這些工具提供廣泛的功能,可滿足現代 .NET 開發人員的需求。 無論您是要建立資料擷取伺服器,或是需要即時聊天應用程式的強大遊戲伺服器,這些函式庫都是您的最佳選擇。
開始使用 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 伺服器。 伺服器會監聽連線,並回應收到的任何資料。
實現 SuperSocket C&num 的功能;
處理多個監聽器
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# 建立一個簡單的命令列伺服器。 這是輕量級文字型協定的理想選擇。
將 SuperSocket C# 與 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將 IronPDF 與 SuperSocket C&num 合併的使用案例;。
假設您有一台使用 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 提供 免費試用,其授權費用從 $799 起,為您的開發專案帶來廣泛的功能,提供絕佳的價值。 透過合併這兩個函式庫,您可以簡化伺服器有效處理複雜任務的能力,同時增強功能與效能。
常見問題解答
SuperSocket C# 用來做什麼?
SuperSocket C# 用於開發伺服器端套接字應用程式。它具有高度擴充性,並支援各種網路協定,因此適用於 GPS 伺服器和工業控制系統等環境。
如何在 .NET 應用程式中將 HTML 轉換為 PDF?
您可以使用 IronPDF 的 RenderHtmlAsPdf 方法將 HTML 字串轉換為 PDF,也可以使用 RenderHtmlFileAsPdf 在 .NET 應用程式中將 HTML 檔案轉換為 PDF。
如何在 .NET 專案中設定 SuperSocket 伺服器?
要在 .NET 專案中設定 SuperSocket 伺服器,您需要安裝 SuperSocket NuGet 套件,使用 appsettings.json 檔案設定伺服器,並在應用程式程式碼中初始化伺服器。
IronPdf 如何增強伺服器端應用程式?
IronPDF 可通過提供動態 PDF 生成和處理功能增強伺服器端應用程式,實現基於客戶端請求實時創建和分發 PDF 文件。
SuperSocket 是否可以管理多個通訊協定監聽器?
是的,SuperSocket 可以管理多個通訊協定監聽器,允許單一伺服器實例同時處理資料擷取伺服器等應用程式的各種通訊協定和連接埠。
IronPDF 在 PDF 文件處理方面有哪些優點?
IronPDF 提供從 PDF 文件建立、編輯和擷取內容的全面功能。它是需要進階 PDF 文件處理和操作的應用程式的理想選擇。
SuperSocket 如何處理並發的套接字連線?
SuperSocket 使用會話類別處理並發的套接字連線,以管理連線事件,即使在高負載的情況下,也能確保可靠的通訊和穩健的伺服器效能。
是否可以將 PDF 功能整合到 SuperSocket 應用程式中?
是的,透過將 IronPDF 整合至您的 SuperSocket 應用程式,您可以新增 PDF 功能,例如動態 PDF 產生與編輯,增強應用程式的功能。
SuperSocket 的常見用例有哪些?
SuperSocket 的常見用例包括 GPS 伺服器、工業控制系統、資料擷取伺服器和即時遊戲伺服器,所有這些伺服器都能從有效率且可靠的套接字通訊中獲益。
如何在 SuperSocket 中處理二進位資料?
SuperSocket 利用會話類別有效率地處理二進位資料,以處理傳入的二進位封包並傳送回應,這對於需要二進位層級資料處理的應用程式來說非常重要。
IronPDF 是否支持服务器应用程序中 HTML 到 PDF 的转换?
是的,IronPDF 支援伺服器應用程式中的 HTML 至 PDF 轉換,可將 HTML 內容無縫轉換為高品質的 PDF 文件。







