SuperSocket 中的 UDP 支持

Keywords: UDP

在 SuperSocket 中启用 UDP

除了TCP,SuperSocket 也能支持 UDP。

首先,你需要引用包 SuperSocket.Udp.

    dotnet add package SuperSocket.Udp --version 2.0.0-*

在你像TCP一样创建 SuperSocket host builder 之后,你只需要额外添加一行代码来启用 UDP:

    hostBuilder.UseUdp();

使用你自己的会话标识

在 SuperSocket UDP 服务器中,Socket 客户端的 IP 地址和端口用来作为会话的标识。但是在一些情况下,你需要用设备ID之类的东西作为会话标识。SuperSocket 通过接口 IUdpSessionIdentifierProvider 支持这一功能。你需要实现这个接口,然后将它注册到 SuperSocket 的 host builder 中。

定义你的 UdpSessionIdentifierProvider:

public class MySessionIdentifierProvider : IUdpSessionIdentifierProvider
{
    public string GetSessionIdentifier(IPEndPoint remoteEndPoint, ArraySegment<byte> data)
    {
        // take the device ID from the package data
        ....
        //return deviceID;
    }
}

注册你的 UdpSessionIdentifierProvider:

hostBuilder.ConfigureServices((context, services) =>
{
    services.AddSingleton<IUdpSessionIdentifierProvider, MySessionIdentifierProvider>();                
})