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); }
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)); }
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); }
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); }