Daniel Santos Ответов: 2

Как получить IP-адрес, постоянно используя многопоточность?


Поэтому я хочу постоянно нисходить строку из Webclient с помощью потоковой передачи, но, похоже, не могу найти способ сделать это.

У меня есть VPN и метка на моей форме, я хочу что-то, что всякий раз, когда я подключаюсь к своей vpn или отключаю метку, обновляет текст на ip.

Что я уже пробовал:

Do Until i = -1
            i = i + 1
            Try
                Dim client As WebClient = New WebClient()
                Dim reply As String = client.DownloadString("http://tools.feron.it/php/ip.php")
                eLabel2.Text = reply

            Catch ex As Exception
                Dim client As WebClient = New WebClient()
                Dim reply As String = client.DownloadString("http://tools.feron.it/php/ip.php")
                eLabel2.Text = reply

            End Try
        Loop

[no name]

Не могу найти способ сделать что? Нигде в вашем коде нет ничего, что указывало бы на многопоточность. А если и был, то вы не можете обновить элементы управления пользовательским интерфейсом из потока.

Daniel Santos

Вопрос в том, как я могу постоянно загружать строку из webclient?
__________________________________________________________
CheckForIllegalCrossThreadCalls = False
поток = новая система.Нарезание резьбы.Нить(оператором addressof downloadip)
нить.Начать()

2 Ответов

Рейтинг:
1

Matt McKinney

// См. https://www.ipify.org/
// автор / владелец заявляет, что он может быть использован "без ограничений"

Дим клиента, так как новая система.Нет.Вебклиент
Dim ip as String = клиент.DownloadString("https://api.ipify.org")


Patrice T

Не повод ругаться !

Matt McKinney

Я абсолютно согласен... нет никаких причин опрашивать внешний IP-адрес, как считает автор. Запуск фонового потока/цикла для этой цели кажется бессмысленным и избыточным... если только у автора нет какой-то действительно странной конфигурации шлюза на другом конце туннеля.
Возможно, лучшим способом является запуск сетевых событий (при условии наличия VPN-адаптера) с последующим одним внешним IP-запросом.
Видишь https://msdn.microsoft.com/en-us/library/system.net.networkinformation.networkchange.networkaddresschanged(v=vs. 110). aspx

Рейтинг:
0

Dave Kreskowiak

Вы не делаете этого, "постоянно загружая строку". Это будет называться опросом и довольно интенсивно потребляет процессор, а также генерирует тонну веб-трафика и, возможно, выводит из себя владельца веб-сайта, которым вы злоупотребляете.

Вы делаете это, обрабатывая событие, которое уведомляет вас об изменениях IP-адресов на любом сетевом интерфейсе, например Сетевой обмен.NetworkAddressChanged Событие (System. Net.NetworkInformation)[^]