示例#1
0
        public static TBuilder WithTcpTransport <TBuilder>(this TBuilder builder, string address,
                                                           Action <SocketTransportSettings> options = null)
            where TBuilder : BaseConnectionBuilder
        {
            var settings = new SocketTransportSettings(ConnectionSide.Client);

            options?.Invoke(settings);

            builder.TransportFactory = new TransportFactory(address, SocketType.TCP, settings);

            return(builder);
        }
        public static TBuilder AddTcpServer <TBuilder>(this TBuilder builder, string address,
                                                       Action <SocketTransportSettings> options = null)
            where TBuilder : BaseServiceHostBuilder
        {
            var settings = new SocketTransportSettings(ConnectionSide.Server);

            options?.Invoke(settings);
            var listener = SocketTools.CreateTcpListener(address, settings, builder.LoggerFactory);

            builder.Listeners.Add(listener);
            return(builder);
        }
示例#3
0
        public static IListener CreateTcpListener(string address, SocketTransportSettings settings, ILoggerFactory loggerFactory)
        {
            if (address == null)
            {
                throw new ArgumentNullException(nameof(address));
            }

            var uri = new Uri(address);

            if (uri.Scheme != "tcp" && uri.Scheme != Uri.UriSchemeNetTcp)
            {
                throw new Exception($"{nameof(address)} must be valid tcp:// or net.tcp:// address");
            }

            return(new TcpListener(uri, settings, loggerFactory));
        }