Ejemplo n.º 1
0
        public SocketListener(Multiaddress localAddress, bool reusePort)
        {
            _reusePort = reusePort;
            SocketType   st;
            ProtocolType pt;

            EndPoint addr;

            if (localAddress != null)
            {
                addr = localAddress.ToEndPoint(out pt, out st);
            }
            else
            {
                st   = SocketType.Stream;
                pt   = ProtocolType.Tcp;
                addr = new IPEndPoint(IPAddress.Loopback, 0);
            }

            _socket = new Socket(addr.AddressFamily, st, pt);
            if (reusePort)
            {
                _socket.ExclusiveAddressUse = false;
                _socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
            }
            _socket.SetIPProtectionLevel(IPProtectionLevel.Unrestricted);
            _socket.Bind(addr);
            _socket.Listen(512);

            Address      = _socket.LocalEndPoint;
            Multiaddress = _socket.GetLocalMultiaddress();
        }
Ejemplo n.º 2
0
 public SocketDialer(Multiaddress localAddress, TimeSpan?timeout, bool reusePort)
 {
     _timeout          = timeout;
     _reusePort        = reusePort;
     LocalAddress      = localAddress?.ToEndPoint();
     LocalMultiaddress = localAddress;
 }
Ejemplo n.º 3
0
        public Task <IConnection> DialAsync(Multiaddress remoteAddress, CancellationToken cancellationToken)
        {
            ProtocolType p;
            SocketType   s;
            var          ip = remoteAddress.ToEndPoint(out p, out s);

            return(DialAsync(ip, s, p, cancellationToken));
        }
Ejemplo n.º 4
0
        public IConnection Dial(Multiaddress remoteAddress)
        {
            ProtocolType p;
            SocketType   s;
            var          ip = remoteAddress.ToEndPoint(out p, out s);

            return(Dial(ip, s, p));
        }
Ejemplo n.º 5
0
        public static Socket CreateSocket(this Multiaddress ma, out IPEndPoint ep)
        {
            ProtocolType pt;
            SocketType   st;

            ep = ma.ToEndPoint(out pt, out st);

            return(new Socket(ep.AddressFamily, st, pt));
        }
        public static bool IsIPLoopback(this Multiaddress ma)
        {
            var ep = ma.ToEndPoint();

            if (ep == null)
            {
                return(false);
            }

            return(ep.Address.Equals(IPAddress.Loopback) || ep.Address.Equals(IPAddress.IPv6Loopback));
        }
Ejemplo n.º 7
0
        public TcpDialer(TcpTransport t, Multiaddress laddr, TimeSpan?timeout, bool reusePort)
        {
            var la = laddr.ToEndPoint();

            if (la == null)
            {
                throw new Exception("Invalid address");
            }

            _transport = t;
            _dialer    = new SocketDialer(laddr, timeout, reusePort);
        }