跳到主要内容
版本:v3

NetOption

重要 注意 提醒

Coding Style wiki


NetOptionNetFrame 连接选项的抽象基类,定义各协议共用的自动重连设置。内置三个派生类,分别承载三种内置 Provider 的连接参数;实现自定义 Provider 时,也可继承此类扩展专属选项。

命名空间OxGFrame.NetFrame
类型public abstract class
源码NetOption.cs
using OxGFrame.NetFrame;

声明

public abstract class NetOption

派生类总览

适用 Provider说明
TcpNetOptionTcpNetProviderTCP 连接选项(主机、端口与数据包处理设置)。
KcpNetOptionKcpNetProviderKCP 连接选项(主机、端口、通道与 KCP 配置)。
WebSocketNetOptionWebSocketNetProviderWebSocket 连接选项(连接 URL)。

属性

属性类型默认值说明
autoReconnectCountint-1自动重连次数。大于 0 时,断线(非主动关闭)后会自动尝试重连并逐次递减;-1 表示禁用自动重连。可设为 int.MaxValue 达到近乎无限次重连。

构造函数

public NetOption(int autoReconnectCount = -1)

参数

参数类型说明
autoReconnectCountint自动重连次数。
默认值-1(禁用自动重连)

说明

由派生类构造函数通过 base(autoReconnectCount) 调用,初始化自动重连次数。

提醒 重连间隔与重连回调可通过 NetNode.SetReconnectTickerTime(默认 5 秒)与 NetNode.SetReconnectAction 设置。


TcpNetOption

TcpNetProvider(Telepathy)的连接选项。

类型public class
源码TcpNetOption.cs

声明

public class TcpNetOption : NetOption

属性

属性类型默认值说明
hoststring服务器主机地址。
portint服务器端口。
processLimitPerTickint64每次轮询(tick)最多处理的数据包数。
maxBufferSizeint65536单个数据包的最大缓冲大小(64KB)。

构造函数

public TcpNetOption(string host, int port, int autoReconnectCount = -1)
public TcpNetOption(string host, int port, int processLimitPerTick, int maxBufferSize = 65536, int autoReconnectCount = -1)

参数

参数类型说明
hoststring服务器主机地址。
portint服务器端口。
processLimitPerTickint每次轮询最多处理的数据包数。
maxBufferSizeint单个数据包的最大缓冲大小。
默认值65536
autoReconnectCountint自动重连次数。
默认值-1(禁用自动重连)

示例

// 基本连接(断线后自动重连 3 次)
var tcpOption = new TcpNetOption("127.0.0.1", 8888, autoReconnectCount: 3);
NetFrames.Connect(tcpOption);

// 自定义数据包处理上限与缓冲大小
var tunedOption = new TcpNetOption("127.0.0.1", 8888, processLimitPerTick: 128, maxBufferSize: 131072);

KcpNetOption

KcpNetProvider(kcp2k)的连接选项。

类型public class
源码KcpNetOption.cs

声明

public class KcpNetOption : NetOption

属性

属性类型默认值说明
hoststring服务器主机地址。
portint服务器端口。
kcpChannelKcpChannelKcpChannel.ReliableKCP 传输通道(Reliable 可靠 / Unreliable 不可靠)。
configKcpConfig内置默认配置(见下)kcp2k 的连接配置(NoDelay、窗口大小、超时等)。

config 的内置默认值如下:

new KcpConfig
(
NoDelay: true,
DualMode: false,
Interval: 1,
Timeout: 2000,
SendWindowSize: Kcp.WND_SND * 1000,
ReceiveWindowSize: Kcp.WND_RCV * 1000,
CongestionWindow: false,
MaxRetransmits: Kcp.DEADLINK * 2
)

构造函数

public KcpNetOption(string host, int port, KcpChannel kcpChannel = KcpChannel.Reliable, int autoReconnectCount = -1)
public KcpNetOption(string host, int port, KcpConfig config, KcpChannel kcpChannel = KcpChannel.Reliable, int autoReconnectCount = -1)

参数

参数类型说明
hoststring服务器主机地址。
portint服务器端口。连接时会转换为 ushort(0–65535)。
configKcpConfig自定义 kcp2k 连接配置。未指定时使用内置默认配置。
kcpChannelKcpChannelKCP 传输通道。
默认值KcpChannel.Reliable
autoReconnectCountint自动重连次数。
默认值-1(禁用自动重连)

示例

using kcp2k;

// 使用内置默认配置
var kcpOption = new KcpNetOption("127.0.0.1", 7777);
NetFrames.Connect(kcpOption);

// 自定义 KcpConfig
var config = new KcpConfig(NoDelay: true, Interval: 10, Timeout: 5000);
var customOption = new KcpNetOption("127.0.0.1", 7777, config, KcpChannel.Reliable, autoReconnectCount: 3);

WebSocketNetOption

WebSocketNetProvider(UnityWebSocket)的连接选项。

类型public class
源码WebSocketNetOption.cs

声明

public class WebSocketNetOption : NetOption

属性

属性类型默认值说明
urlstringWebSocket 连接地址(ws://wss://)。

构造函数

public WebSocketNetOption(string url, int autoReconnectCount = -1)

参数

参数类型说明
urlstringWebSocket 连接地址(ws://wss://)。
autoReconnectCountint自动重连次数。
默认值-1(禁用自动重连)

示例

var wsOption = new WebSocketNetOption("ws://127.0.0.1:8080/ws", autoReconnectCount: 3);
NetFrames.Connect(wsOption);

自定义扩展

实现自定义 Provider 时,可继承 NetOption 加入该协议专属的连接参数:

public class CustomNetOption : NetOption
{
public string host { get; set; }

public int port { get; set; }

public CustomNetOption(string host, int port, int autoReconnectCount = -1) : base(autoReconnectCount)
{
this.host = host;
this.port = port;
}
}

在自定义 Provider 的 CreateConnect 中,将 NetOption 转换回 CustomNetOption 即可获取参数(参考 INetProvider 继承实现示例)。