背景:我的程序啟動(dòng),并且必須獲取正在其上運(yùn)行的計(jì)算機(jī)的IP地址。它是客戶端-服務(wù)器體系結(jié)構(gòu)中的“服務(wù)器”,用于接收傳入的tcp-ip消息。我還應(yīng)該添加機(jī)器:有可用的多IP地址正在運(yùn)行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(); } } }這是錯(cuò)誤消息:(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貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊
我假設(shè)特定的客戶端計(jì)算機(jī)比收到此錯(cuò)誤的網(wǎng)絡(luò)有些故障。
引用@Stephen Cleary
此錯(cuò)誤表明網(wǎng)絡(luò)未連接或配置不正確。這絕對(duì)是客戶端計(jì)算機(jī)上的錯(cuò)誤,而不是服務(wù)器上的錯(cuò)誤。您無(wú)法做很多事情來(lái)“解決”問(wèn)題。您幾乎可以做的就是升級(jí)客戶端的網(wǎng)絡(luò)驅(qū)動(dòng)程序并檢查連接問(wèn)題(也許它們幾乎不在無(wú)線范圍內(nèi),或者以太網(wǎng)電纜缺少其鎖定選項(xiàng)卡)。

慕慕森
TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊
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 關(guān)注
- 203 瀏覽
添加回答
舉報(bào)
0/150
提交
取消