Tài liệu

Tùy chọn Network Socket

Thời gian đọc 4 phút Gói: Nalix.Network
Trên trang này

Không gian tên: Nalix.Network.Options
Assembly: Nalix.Network

NetworkSocketOptions (public sealed partial class NetworkSocketOptions : ConfigurationLoader, IValidatableConfiguration) cấu hình chính sách socket dùng chung của TcpListenerBase, UdpListenerBase và SocketUdpTransport.

Ánh xạ mã nguồn

  • src/Nalix.Network/Options/NetworkSocketOptions.cs
  • src/Nalix.Network/Listeners/TcpListener/TcpListener.Core.cs
  • src/Nalix.Network/Listeners/TcpListener/TcpListener.SocketConfig.cs
  • src/Nalix.Network/Listeners/TcpListener/TcpListener.ProcessChannel.cs
  • src/Nalix.Network/Listeners/UdpListener/UdpListener.Core.cs
  • src/Nalix.Network/Listeners/UdpListener/UdpListener.SocketConfig.cs
  • src/Nalix.Network/Listeners/UdpListener/UdpListener.Receive.cs
  • src/Nalix.Network/Internal/Transport/SocketUdpTransport.cs

Giá trị mặc định và kiểm tra hợp lệ

Được nạp từ mục [NetworkSocket] của default.ini:

Thuộc tínhKiểuMặc địnhKiểm tra hợp lệTác động lúc chạy
Portushort57206[ValueRange(1, 65535)]; setter ném ArgumentOutOfRangeException nếu < 1Cổng lắng nghe TCP/UDP mặc định khi không truyền cổng tường minh vào constructor của listener.
Backlogint512[ValueRange(1, 65535)]Truyền vào Socket.Listen(Backlog) trên listener TCP.
EnableTimeoutbooltrue—Bật đăng ký/hủy đăng ký các kết nối TCP đã chấp nhận với TimingWheel dùng chung.
EnableDualStackbooltrue—Gắn socket listener IPv6 (AddressFamily.InterNetworkV6), có tự động dự phòng sang IPv4 nếu không được hỗ trợ.
DualModebooltrue—Đặt Socket.DualMode = true trên socket listener IPv6 để chấp nhận cả kết nối IPv6 và IPv4-mapped trên cùng một cổng.
NoDelaybooltrue—Đặt Socket.NoDelay = true trên socket TCP đã chấp nhận (tắt thuật toán Nagle).
MaxParallelint1[ValueRange(1, 1024)]Số worker chấp nhận TCP SAEA chạy đồng thời được lên lịch khi kích hoạt listener (và là hệ số nhân để cấp phát trước pool chấp nhận).
MaxParallelUDPint1[ValueRange(1, 1024)]Số vòng lặp worker nhận UDP SAEA chạy đồng thời được lên lịch khi kích hoạt.
BufferSizeint65536[ValueRange(2048, 10_485_760)]Áp dụng cho ReceiveBufferSize của listener TCP, SendBufferSize/ReceiveBufferSize của client TCP đã chấp nhận, và SendBufferSize/ReceiveBufferSize của UDP.
KeepAlivebooltrue—Bật gói thăm dò TCP Keep-Alive (TcpKeepAliveTime = 3s, TcpKeepAliveInterval = 1s, TcpKeepAliveRetryCount = 3, với phương án dự phòng IOControlCode.KeepAliveValues trên Windows).
ReuseAddressbooltrue—Đặt ExclusiveAddressUse = !ReuseAddress và SocketOptionName.ReuseAddress.
ReusePortbooltrue—Cố gắng bật SO_REUSEPORT (SocketOptionName.ReuseUnicastPort) khi hệ điều hành hỗ trợ.
TcpFastOpenbooltrue—Cố gắng bật TCP_FASTOPEN trên socket lắng nghe khi hệ điều hành hỗ trợ.
DispatchProcessorAffinityint-1—Chỉ số nhân CPU bắt đầu từ 0, dùng để ghim luồng consumer của kênh chấp nhận TCP (-1 để hệ điều hành tự lập lịch).
ProcessChannelCapacityint256[ValueRange(1, int.MaxValue)]Dung lượng của Channel<AcceptConnectionResult> có giới hạn giữa các worker chấp nhận TCP và consumer khởi tạo.
ProcessChannelDrainTimeoutint5000[ValueRange(0, 60000)]Thời gian tối đa tính bằng mili giây để chờ kênh xử lý chấp nhận TCP được xả hết một cách êm thuận trong Deactivate.
MaxUdpDatagramSizeint1440[ValueRange(64, 65507)]Kích thước tối đa tính bằng byte của một datagram UDP đến (UdpListenerBase) hoặc đi (SocketUdpTransport).

Validate() thực thi this.ValidateDataAnnotations() và ném ValidationException khi bất kỳ ràng buộc [ValueRange] nào không thỏa.

Áp dụng cho TCP và UDP

Thiết lậpÁp dụng cho TcpListenerBaseÁp dụng cho UdpListenerBase / SocketUdpTransport
Port, EnableDualStack, DualMode, BufferSize, ReuseAddress, ReusePortCóCó
Backlog, NoDelay, KeepAlive, TcpFastOpen, EnableTimeout, MaxParallel, DispatchProcessorAffinity, ProcessChannelCapacity, ProcessChannelDrainTimeoutCóKhông
MaxParallelUDP, MaxUdpDatagramSize, DontFragment = true, chặn SIO_UDP_CONNRESET trên WindowsKhôngCó

API liên quan