示例#1
0
        public void IpFamily(string ipString)
        {
            var endPoint = new IPEndPoint(IPAddress.Parse(ipString), Port);
            Udp udp      = this.loop.CreateUdp();

            /* don't keep the loop alive */
            udp.RemoveReference();
            udp.Bind(endPoint);

            udp.Broadcast(true);
            udp.Broadcast(true);
            udp.Broadcast(false);
            udp.Broadcast(false);

            /* values 1-255 should work */
            for (int i = 1; i <= 255; i++)
            {
                udp.Ttl(i);
            }

            var invalidTtls = new [] { -1, 0, 256 };

            foreach (int i in invalidTtls)
            {
                var error = Assert.Throws <OperationException>(() => udp.Ttl(i));
                Assert.Equal(ErrorCode.EINVAL, error.ErrorCode);
            }

            udp.MulticastLoopback(true);
            udp.MulticastLoopback(true);
            udp.MulticastLoopback(false);
            udp.MulticastLoopback(false);

            /* values 0-255 should work */
            for (int i = 0; i <= 255; i++)
            {
                udp.MulticastTtl(i);
            }

            /* anything >255 should fail */
            var exception = Assert.Throws <OperationException>(() => udp.MulticastTtl(256));

            Assert.Equal(ErrorCode.EINVAL, exception.ErrorCode);
            /* don't test ttl=-1, it's a valid value on some platforms */

            this.loop.RunDefault();
        }
示例#2
0
        public void NoBind()
        {
            Udp udp = this.loop.CreateUdp();

            var error = Assert.Throws <OperationException>(() => udp.MulticastTtl(32));

            Assert.Equal(ErrorCode.EBADF, error.ErrorCode);

            error = Assert.Throws <OperationException>(() => udp.Broadcast(true));
            Assert.Equal(ErrorCode.EBADF, error.ErrorCode);

            error = Assert.Throws <OperationException>(() => udp.Ttl(1));
            Assert.Equal(ErrorCode.EBADF, error.ErrorCode);

            error = Assert.Throws <OperationException>(() => udp.MulticastInterface(IPAddress.Any));
            Assert.Equal(ErrorCode.EBADF, error.ErrorCode);

            udp.CloseHandle(OnClose);

            this.loop.RunDefault();
        }