src/DotNetCommon.Core/NetworkHelper.cs

(开头部分) 3KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

namespace DotNetCommon
{
    using System;
    using System.Collections.Generic;
    using System.Diagnostics.CodeAnalysis;
    using System.Net;
    using System.Net.NetworkInformation;
    using System.Net.Sockets;

    /// <summary>
    /// 网络帮助类
    /// </summary>
    /// <remarks>
    /// 功能: 获取计算机全限定域名 <seealso cref="GetFQDN"/>、 获取有效的IP地址 <seealso cref="GetLocalIPAddress"/>、 获取所有的IP地址 <seealso cref="GetLocalIPAddresses()"/>
    /// </remarks>
    public static class NetworkHelper
    {
        /// <summary>
        /// 获取计算机全限定域名( <c>FQDN</c> ,<c>Fully Qualified Domain Name</c>) <see href="http://stackoverflow.com/questions/804700/how-to-find-fqdn-of-local-machine-in-c-net"/>
        /// </summary>
        /// <remarks>关于FQDN: <see href="https://baike.baidu.com/item/FQDN/5102541"/></remarks>
        /// <returns></returns>
        public static string GetFQDN()
        {
            var domainName = IPGlobalProperties.GetIPGlobalProperties().DomainName;
            var hostName = Dns.GetHostName();

            domainName = "." + domainName;
            if (!hostName.EndsWith(domainName, StringComparison.InvariantCultureIgnoreCase))
            {
                hostName += domainName;
            }

            return hostName;
        }

        /// <summary>
        /// 获取本机联网使用的IP地址
        /// </summary>
        /// <remarks>
        /// <see href="http://stackoverflow.com/a/27376368"/>
        /// </remarks>
        /// <returns></returns>
        public static IPAddress GetLocalIPAddress()
        {
            using var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, 0);

            try
            {
                // can be any address
                socket.Connect("10.0.2.4", 65530);
                var endPoint = socket.LocalEndPoint as IPEndPoint;
                // ReSharper disable once PossibleNullReferenceException
                return IPAddress.Parse(endPoint.Address.ToString());
            }
            catch (SocketException)
            {
                return IPAddress.Parse("127.0.0.1");
            }
        }
后面还有 40 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。