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

慕慕森
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() : "";
- 3 回答
- 0 關注
- 195 瀏覽
添加回答
舉報
0/150
提交
取消