示例#1
0
        public override string ToString()
        {
            if (_fd == null)
            {
                return("<closed>");
            }

            string s;

            if (_incoming && !_bound)
            {
                s = "local address = " + Network.AddrToString(_addr);
            }
            else if (_state == StateNotConnected)
            {
                s = "local address = " + Network.LocalAddrToString(Network.GetLocalAddress(_fd));
                if (_peerAddr != null)
                {
                    s += "\nremote address = " + Network.AddrToString(_peerAddr);
                }
            }
            else
            {
                s = Network.FdToString(_fd);
            }

            if (_mcastAddr != null)
            {
                s += "\nmulticast address = " + Network.AddrToString(_mcastAddr);
            }
            return(s);
        }
示例#2
0
        public override string ToString()
        {
            try
            {
                var sb = new StringBuilder();
                if (_incoming)
                {
                    sb.Append("local address = " + Network.LocalAddrToString(Network.GetLocalAddress(Socket)));
                    if (_peerAddr != null)
                    {
                        sb.Append($"\nremote address = {_peerAddr}");
                    }
                }
                else
                {
                    sb.Append(Network.SocketToString(Socket));
                }
                if (MulticastAddress != null)
                {
                    sb.Append($"\nmulticast address = {MulticastAddress}");
                }

                List <string> interfaces;
                if (MulticastAddress == null)
                {
                    interfaces = Network.GetHostsForEndpointExpand(_addr.ToString(), Network.EnableBoth, true);
                }
                else
                {
                    Debug.Assert(_multicastInterface != null);
                    interfaces = Network.GetInterfacesForMulticast(_multicastInterface,
                                                                   Network.GetIPVersion(MulticastAddress.Address));
                }
                if (interfaces.Count != 0)
                {
                    sb.Append("\nlocal interfaces = ");
                    sb.Append(string.Join(", ", interfaces));
                }
                return(sb.ToString());
            }
            catch (ObjectDisposedException)
            {
                return("<closed>");
            }
        }
示例#3
0
        public ConnectionInfo GetInfo()
        {
            var    info = new TCPConnectionInfo();
            Socket?fd   = _stream.Fd();

            if (fd != null)
            {
                EndPoint localEndpoint = Network.GetLocalAddress(fd);
                info.LocalAddress = Network.EndpointAddressToString(localEndpoint);
                info.LocalPort    = Network.EndpointPort(localEndpoint);
                EndPoint?remoteEndpoint = Network.GetRemoteAddress(fd);
                info.RemoteAddress = Network.EndpointAddressToString(remoteEndpoint);
                info.RemotePort    = Network.EndpointPort(remoteEndpoint);
                info.RcvSize       = Network.GetRecvBufferSize(fd);
                info.SndSize       = Network.GetSendBufferSize(fd);
            }
            return(info);
        }
示例#4
0
        public ConnectionInfo GetInfo()
        {
            var info = new UDPConnectionInfo();

            if (_fd != null)
            {
                EndPoint localEndpoint = Network.GetLocalAddress(_fd);
                info.LocalAddress = Network.EndpointAddressToString(localEndpoint);
                info.LocalPort    = Network.EndpointPort(localEndpoint);
                if (_state == StateNotConnected)
                {
                    if (_peerAddr != null)
                    {
                        info.RemoteAddress = Network.EndpointAddressToString(_peerAddr);
                        info.RemotePort    = Network.EndpointPort(_peerAddr);
                    }
                }
                else
                {
                    EndPoint?remoteEndpoint = Network.GetRemoteAddress(_fd);
                    if (remoteEndpoint != null)
                    {
                        info.RemoteAddress = Network.EndpointAddressToString(remoteEndpoint);
                        info.RemotePort    = Network.EndpointPort(remoteEndpoint);
                    }
                }
                info.RcvSize = Network.GetRecvBufferSize(_fd);
                info.SndSize = Network.GetSendBufferSize(_fd);
            }

            if (_mcastAddr != null)
            {
                info.McastAddress = Network.EndpointAddressToString(_mcastAddr);
                info.McastPort    = Network.EndpointPort(_mcastAddr);
            }
            return(info);
        }