亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么獲取IP地址會引發異常?

為什么獲取IP地址會引發異常?

C#
肥皂起泡泡 2021-04-01 18:13:09
背景:我的程序啟動,并且必須獲取正在其上運行的計算機的IP地址。它是客戶端-服務器體系結構中的“服務器”,用于接收傳入的tcp-ip消息。我還應該添加機器:有可用的多IP地址正在運行Windows 2008 R2 Server這是獲取IP地址的代碼:  public bool IsNetworkAvailable    {        get        {            return System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();        }    }    public string thisIP { get; private set; }    public void GetThisIP()    {        if (!string.IsNullOrEmpty(thisIP))        {            return;        }        thisIP = "*";        if (IsNetworkAvailable)        {            using (System.Net.Sockets.Socket socket = new System.Net.Sockets.Socket(                System.Net.Sockets.AddressFamily.InterNetwork,                System.Net.Sockets.SocketType.Dgram, 0))            {                socket.Connect("11.0.1.5", 65530);                System.Net.IPEndPoint endPoint = socket.LocalEndPoint as System.Net.IPEndPoint;                thisIP = endPoint.Address.ToString();            }        }    }這是錯誤消息:(0x80004005): A socket operation was attempted to an unreachable network 11.0.1.5:65530 at System.Net.Sockets.Socket.Connect(IPAddress[] addresses, Int32 port)
查看完整描述

3 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

我假設特定的客戶端計算機比收到此錯誤的網絡有些故障。

引用@Stephen Cleary

此錯誤表明網絡未連接或配置不正確。這絕對是客戶端計算機上的錯誤,而不是服務器上的錯誤。您無法做很多事情來“解決”問題。您幾乎可以做的就是升級客戶端的網絡驅動程序并檢查連接問題(也許它們幾乎不在無線范圍內,或者以太網電纜缺少其鎖定選項卡)。


查看完整回答
反對 回復 2021-04-17
?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

        System.Net.NetworkInformation.UnicastIPAddressInformation mostSuitableIp = null;
            var networkInterfaces = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces();
            foreach (var network in networkInterfaces)
            {
                if (network.OperationalStatus != System.Net.NetworkInformation.OperationalStatus.Up)
                {
                    continue;
                }
                var properties = network.GetIPProperties();
                if (properties.GatewayAddresses.Count == 0)
                {
                    continue;
                }
                if (mostSuitableIp != null)
                {
                    break;
                }
                foreach (var address in properties.UnicastAddresses)
                {
                    if (address.Address.AddressFamily != System.Net.Sockets.AddressFamily.InterNetwork)
                    {
                        continue;
                    }
                    if (System.Net.IPAddress.IsLoopback(address.Address))
                    {
                        continue;
                    }
                    if (mostSuitableIp == null && address.IsDnsEligible)
                    {
                        mostSuitableIp = address;
                        break;
                    }
               }
            }
            thisIP = mostSuitableIp != null ? mostSuitableIp.Address.ToString() : "";


查看完整回答
反對 回復 2021-04-17
  • 3 回答
  • 0 關注
  • 195 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號