如何获取服务器(不是网络服务器)的IP地址,而是在Xamarin.Forms中的wifi模块上创建的TCP服务器

我需要获取运行TCP服务器的Wi-Fi模块的IP地址。 应用程序将打开WiFi连接设置页面,以允许用户连接到Wi-Fi模块创建的网络(需要输入密码) – 请参阅附图 。 服务器(Wi-FI模块)IP地址是172.1.4.155(例如)但是当我尝试使用GetLocalIPAddress() (下面附带)在Xamarin.Forms中获取IP地址时,它返回的地址是本地IP地址设备(电话) – 172.1.4.55(例如)。 我需要能够在没有应用程序中的用户输入的情况下以编程方式获取IP地址。

WiFi连接设置页面的示例

有没有办法获取(外部)非设备特定IP地址的IP地址? 我假设手机返回的IP地址是DHCP分配的IP地址。 我需要获取服务器IP地址,因为在手机和WiFi模块之间建立TCP套接字连接至关重要。 我一直在努力寻找一个没有任何成功的解决方案,所以任何帮助/建议或示例将不胜感激。

下面的代码是获取IP地址的GetLocalIPAddress()函数。

public static string GetLocalIPAddress() { var host = Dns.GetHostEntry(Dns.GetHostName()); foreach (var ip in host.AddressList) { if (ip.AddressFamily == AddressFamily.InterNetwork) { return ip.ToString(); } //return ""; } //throw new Exception("Local IP Address Not Found!"); return "None"; } 

如何在XAMARIN表单中读取IP地址,我已经在IOS和Android项目中创建了DependencyServices并获得了正确的IP地址。 下面是获取IP地址的代码。

在PCL项目中

 public interface IIPAddressManager { String GetIPAddress(); } 

在IOS项目中

 [assembly: Dependency(typeof(YourAppNamespace.iOSUnified.iOS.DependencyServices.IPAddressManager))] namespace YourAppNamespace.iOSUnified.iOS.DependencyServices { class IPAddressManager : IIPAddressManager { public string GetIPAddress() { String ipAddress = ""; foreach (var netInterface in NetworkInterface.GetAllNetworkInterfaces()) { if (netInterface.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 || netInterface.NetworkInterfaceType == NetworkInterfaceType.Ethernet) { foreach (var addrInfo in netInterface.GetIPProperties().UnicastAddresses) { if (addrInfo.Address.AddressFamily == AddressFamily.InterNetwork) { ipAddress = addrInfo.Address.ToString(); } } } } return ipAddress; } } } 

在Android项目中。

 [assembly: Dependency(typeof(YourAppNamespace.Android.Android.DependencyServices.IPAddressManager))] namespace YourAppNamespace.Android.Android.DependencyServices { class IPAddressManager : IIPAddressManager { public string GetIPAddress() { IPAddress[] adresses = Dns.GetHostAddresses(Dns.GetHostName()); if (adresses !=null && adresses[0] != null) { return adresses[0].ToString(); } else { return null; } } } } 

然后在UI项目中调用DependencyServices。

 string ipaddress = DependencyService.Get().GetIPAddress