예제 #1
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>");
            }
        }
예제 #2
0
        public string ToDetailedString()
        {
            var           s = new StringBuilder(ToString());
            List <string> intfs;

            if (_mcastAddr == null)
            {
                intfs = Network.GetHostsForEndpointExpand(Network.EndpointAddressToString(_addr),
                                                          _communicator.IPVersion, true);
            }
            else
            {
                Debug.Assert(_mcastInterface != null);
                intfs = Network.GetInterfacesForMulticast(_mcastInterface,
                                                          Network.GetIPVersion(_mcastAddr.Address));
            }

            if (intfs.Count != 0)
            {
                s.Append("\nlocal interfaces = ");
                s.Append(string.Join(", ", intfs));
            }
            return(s.ToString());
        }