Почему мой сетевой интерфейс android wlan0 не имеет шлюза по умолчанию? - PullRequest
1 голос
/ 23 марта 2020

Что я пытаюсь сделать: найти IP-адрес горячей точки Wi-Fi, к которой подключен android.

Я использую Unity3D с c# и здесь мой код для получения информации об интерфейсе wlan0: Код для получения информации о wlan0

        NetworkInterface ni = NetworkInterface.GetAllNetworkInterfaces()
        .Where(n => n.OperationalStatus == OperationalStatus.Up)
        .Where(n => n.NetworkInterfaceType != NetworkInterfaceType.Loopback)
        .FirstOrDefault();

    Debug.LogWarning($"Up Interface = {ni.Name} " +
        $"has {ni.GetIPProperties().GatewayAddresses.Count} gateway adresses " +
        $"& has {ni.GetIPProperties().DhcpServerAddresses.Count} DHCP Adresses " +
        $"& has {ni.GetIPProperties().DnsAddresses.Count} DNS adresses");

    var gateways = ni.GetIPProperties()?.GatewayAddresses
        .Select(g => g?.Address)
        .Where(a => a != null);

    foreach(var g in gateways)
        Debug.LogWarning($"ip of defaut gateway = {g.MapToIPv4()}");

    foreach(var d in ni.GetIPProperties()?.DhcpServerAddresses)
        Debug.LogWarning($"ip of dhcp = {d.MapToIPv4()}");

    foreach (var d in ni.GetIPProperties()?.DnsAddresses)
        Debug.LogWarning($"ip of dns = {d.MapToIPv4()}");

Когда я запускаю этот код на своей гарнитуре Pico VR, вот результат: Нет шлюза, нет DHCP, нет DNS (и да, моя гарнитура подключена к Wi-Fi)

Up Interface = wlan0 имеет 0 адресов и имеет 0 адресов DHCP и имеет 0 адресов DNS

  1. Почему на android установлен 0 шлюз по умолчанию? (на P C он работает, я могу найти IP-адрес моей точки доступа Wi-Fi).

  2. Как узнать IP-адрес точки доступа Wi-Fi, к которой подключен android?

1 Ответ

0 голосов
/ 30 марта 2020

У меня нет ответа на вопрос «почему у wlan0 нет шлюза по умолчанию»

, но я нашел ответ на вопрос «найти IP-адрес Wi-Fi горячей точки, к которой подключен android» ":

public string GetHotspotIP()
{
    IPAddress myIP = Dns.GetHostAddresses(Dns.GetHostName()).FirstOrDefault();
    Debug.LogWarning($"DNS Host Adress = {myIP}");

    string ipString = myIP.MapToIPv4().ToString(); //ie : 192.168.48.165
    string[] ipParts = ipString.Split('.'); //ie : { "192", "168", "48", "165"}
    return string.Concat(ipParts[0], ".", ipParts[1], ".", ipParts[2], ".", "1"); //ie : 192.168.48.1
}
...