Пример #1
0
        public void Should_send_bytes_over_the_network(string statsdHost, AddressFamily family)
        {
            using var server = new Socket(family, SocketType.Dgram, ProtocolType.Udp)
                  {
                      ReceiveTimeout = 3000
                  };
            server.Bind(new IPEndPoint(family == AddressFamily.InterNetwork ? IPAddress.Loopback : IPAddress.IPv6Loopback, 8125));

            byte[] message = Encoding.UTF8.GetBytes("Hello server!");

            var settings = new UdpChannelSettings
            {
                Host          = statsdHost,
                Port          = 8125,
                AddressFamily = family
            };

            using var channel = new UdpChannel(settings);
            channel.Send(message, message.Length);
            var receiveBuffer = new byte[message.Length];

            server.Receive(receiveBuffer);

            receiveBuffer.ShouldBeEquivalentTo(message);
        }
Пример #2
0
        private static IChannel BuildChannel(Uri uri)
        {
            if (uri.Scheme == "udp")
            {
                var settings = UdpChannelSettings.Parse(uri);

                return(new UdpChannel(settings));
            }

            string message = $"Expected uri scheme to be either 'udp' or 'tcp' but received '{uri.Scheme}'";

            throw new ArgumentException(message, nameof(uri));
        }
Пример #3
0
        public void Should_not_throw_if_address_is_invalid()
        {
            byte[] message = Encoding.UTF8.GetBytes("Hello server!");

            var settings = new UdpChannelSettings
            {
                Host                   = "no.such.host.is.known",
                Port                   = 8125,
                AddressFamily          = AddressFamily.InterNetwork,
                IgnoreSocketExceptions = true
            };

            using var channel = new UdpChannel(settings);
            channel.Send(message, message.Length);
        }
Пример #4
0
        public void Should_parse_uri_properly()
        {
            var uri = new Uri("udp://my-host:8085?prefix=the.service&background=false&ignore_exceptions&dns_update_period=13&ipv6");

            var settings = UdpChannelSettings.Parse(uri);

            var expected = new UdpChannelSettings
            {
                Host = "my-host",
                IgnoreSocketExceptions = true,
                Port            = 8085,
                DnsUpdatePeriod = 13,
                AddressFamily   = AddressFamily.InterNetworkV6
            };

            settings.ShouldBeEquivalentTo(expected);
        }