コード例 #1
0
        public void Parse()
        {
            Assert.That(IPAddress.TryParse("127.0.0.1", out var address), Is.True);
            var endpoint = new IPEndPoint(address, 80);

            Assert.That(IPEndPointEx.Parse("127.0.0.1:80"), Is.EqualTo(endpoint));
            Assert.That(IPEndPointEx.Parse(new ReadOnlySpan <char>("127.0.0.1:80".ToCharArray())), Is.EqualTo(endpoint));

            Assert.Throws <ArgumentNullException>(() => _ = IPEndPointEx.Parse((string)null));

            Assert.Throws <FormatException>(() => _ = IPEndPointEx.Parse(new ReadOnlySpan <char>("!**!".ToCharArray())));

            Assert.That(IPEndPointEx.TryParse("127.0.0.1:80", out var parsed), Is.True);
            Assert.That(parsed, Is.EqualTo(endpoint));

            Assert.That(IPEndPointEx.TryParse(new ReadOnlySpan <char>("127.0.0.1:80".ToCharArray()), out parsed), Is.True);
            Assert.That(parsed, Is.EqualTo(endpoint));

            Assert.That(IPEndPointEx.TryParse("[0:0:0:0:0:0:0:1]:80", out parsed), Is.True);
            Assert.That(parsed.ToString(), Is.EqualTo("[::1]:80"));

            Assert.That(IPEndPointEx.TryParse("[::1]:80", out parsed), Is.True);
            Assert.That(parsed.ToString(), Is.EqualTo("[::1]:80"));

            Assert.That(IPEndPointEx.TryParse(new ReadOnlySpan <char>("!**!:80".ToCharArray()), out _), Is.False);
            Assert.That(IPEndPointEx.TryParse(new ReadOnlySpan <char>("127.0.0.1:xx".ToCharArray()), out _), Is.False);
        }
コード例 #2
0
        public void ConnectAsyncConnectionRefused3()
        {
            var endpoint = IPEndPointEx.Parse("127.0.0.1:11000");

            using var server = new SocketListener(endpoint, SocketListenerMode.ConnectionRefused);
            using var socket = new Socket(endpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

            // for some reason netstandard throws System.Net.Internals.SocketExceptionFactory+ExtendedSocketException
            // which derives from SocketException - use a constraint so NUnit is happy

            Assert.ThrowsAsync(Is.InstanceOf <SocketException>(), async() =>
            {
                // socket exception, connection refused
                await socket.ConnectAsync(endpoint, CancellationToken.None);
            });
        }
コード例 #3
0
        public async Task ConnectAsyncSuccess()
        {
            var endpoint = IPEndPointEx.Parse("127.0.0.1:11000");

            using var server = new SocketListener(endpoint, SocketListenerMode.AcceptOnce);

            using var socket = new Socket(endpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
            await socket.ConnectAsync(endpoint, -1);

            // connected!

            try
            {
                socket.Shutdown(SocketShutdown.Both);
                socket.Close();
                socket.Dispose();
            }
            catch { /* doesn't matter */ }
        }
コード例 #4
0
 public SocketListener(string address, SocketListenerMode mode)
     : this(IPEndPointEx.Parse(address), mode)
 {
 }