Я использую подключенное к Ethernet устройство под управлением Ubuntu 16.04 с именем хоста rp-f00e98. Когда я подключаю его к своей сети, он получает IP-адрес 192.168.0.180. Когда я подключаю его напрямую к моему компьютеру (без другого сетевого подключения), он получает IP-адрес 169.254.149.60.
Я могу открыть окно браузера и подключиться к нему, используя rp-f00e98.local и соответствующий IP-адрес (в зависимости от соединения) в адресной строке. Из командной строки (windows 10) я могу пропинговать его, используя соответствующий IP-адрес. При попытке пропинговать его, используя rp-f00e98 или rp-f00e98.local, я получаю «В результате запроса Ping не удалось найти хост rp-f00e98 ...» в обоих случаях.
При использовании .NET Framework в LabView 2017: Используя класс Ping
в методе System.Net.NetworkInformation
, Send(string)
, я получаю статус PingReply
Success
при использовании IP-адресов, но исключение ( System.Net.Sockets.SocketException
) при использовании имени хоста.
Я попытался использовать метод Dns.GetHostEntry(string)
в System.Net
, который, кажется, работает в системе, подключенной к сети (возвращает IP-адрес 192.168.0.180) при отправке rp-f00e98. Однако при использовании в системе с прямым подключением он все равно каким-либо образом возвращает 192.168.0.180, даже если компьютер не подключен к какой-либо сети, а только напрямую подключен к устройству. arp -a в командной строке подтверждает, что нет 192.168.0.180, и компьютер подключен только к 169.254.149.60.
Итог: мне нужно иметь возможность использовать имя хоста для получения IP-адреса. Есть ли другой метод .NET для использования? Поскольку мой браузер всегда может найти его по имени хоста, как он это делает? Есть еще идеи?