public MqttTcpServerListener( AddressFamily addressFamily, MqttServerTcpEndpointBaseOptions options, X509Certificate2 tlsCertificate, CancellationToken cancellationToken, IMqttNetChildLogger logger) { _cancellationToken = cancellationToken; _logger = logger; _addressFamily = addressFamily; var sb = new SocketOptionBuilder().SetSocket(Sockets.Model.SAEASocketType.Tcp).UseStream(); if (options is MqttServerTlsTcpEndpointOptions tlsOptions) { sb = sb.WithSsl(tlsCertificate, tlsOptions.SslProtocol); } sb = sb.SetPort(options.Port); if (_addressFamily == AddressFamily.InterNetworkV6) { sb = sb.UseIPv6(); } socketOption = sb.Build(); serverSokcet = SocketFactory.CreateServerSocket(socketOption, cancellationToken); serverSokcet.OnAccepted += ServerSokcet_OnAccepted; }
public async Task ConnectAsync(CancellationToken cancellationToken) { IClientSocket client = null; try { SocketOptionBuilder sb = SocketOptionBuilder.Instance; sb = sb.SetReadBufferSize(_options.BufferSize); sb = sb.SetWriteBufferSize(_options.BufferSize); if (!_options.NoDelay) { sb = sb.SetDelay(); } IPAddress ip; string ipStr = _options.Server; if (ipStr.IndexOf("localhost") > -1) { ip = IPAddress.Parse("127.0.0.1"); } else { ip = IPAddress.Parse(ipStr); } if (_options.AddressFamily == AddressFamily.InterNetworkV6 || ip.AddressFamily == AddressFamily.InterNetworkV6) { sb = sb.UseIPv6(); } sb = sb.SetIPEndPoint(new IPEndPoint(ip, _options.GetPort())); client = SocketFactory.CreateClientSocket(sb.Build()); _stream = await((StreamClientSocket)client).ConnectAsync(InternalUserCertificateValidationCallback, LoadCertificates, !_options.TlsOptions.IgnoreCertificateRevocationErrors); Endpoint = client.Endpoint; } catch (Exception) { client?.Dispose(); throw; } }