Пинговать сервер с VB.net через определенный прокси - PullRequest
3 голосов
/ 04 ноября 2011

Я знаю, что вы можете легко отправить запрос ping и получить логический тип возврата в .NET, используя что-то вроде:

If My.Computer.Network.Ping(addressToPing_str, pingTimeOutMS_int) Then<br> MessageBox.Show("Ping successful")<br> End If

Но, похоже, для этого используется прокси-сервер, установленный глобально для Windows (похоже, он использует те же настройки, что и Internet Explorer.)

Что я хочу сделать, так это указать свой собственный IP-адрес и порт для использования в качестве прокси, вместо использования глобального значения windows или чего-то еще ...

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


Поэтому мой вопрос - есть ли какой-либо альтернативный метод отправки запроса ping, который также позволит мне указать, какой прокси-сервер я хочу использовать?

Спасибо!

Ответы [ 2 ]

1 голос
/ 04 ноября 2011

Настройка веб-службы в месте, видимом для всех узлов, которые вы хотите пропинговать.Создайте в веб-службе метод с именем Public Function Ping(Byval ipAddress As String) As Int32

Затем в вашем приложении используйте веб-службу и вызовите методы Async, которые генерирует код при первом использовании веб-службы.Методы Async допускают некоторую степень «параллелизации», о которой вы говорите.

Вызывайте PingAsync с помощью обратного вызова.

Веб-служба действует как ваш «Прокси» ибудет доступен через HTTP.Затем вы можете вызвать Ping даже на клиенте с заблокированным ICMP-трафиком.

Редактировать:

Если вы просто хотите проверить HTTP-прокси на предмет действительного соединения, вы можетеиспользуйте классы WebRequest / WebClient и загрузите небольшой файл на удаленный компьютер.

Информация доступна здесь: http://msdn.microsoft.com/en-us/library/2s8th0s1.aspx и пример консоли доступен здесь: http://msdn.microsoft.com/en-us/library/system.net.webrequest.proxy.aspx

WebRequest.Proxy позволит вам указать HTTP-прокси и переданные учетные данные.Затем вы можете загрузить, скажем, http://www.whatismyip.org/ и проверить, получили ли вы ответ.Если вы получили ответ, значит ваш HTTP прокси работает.

0 голосов
/ 04 ноября 2011

Как насчет использования P / Invoke для непосредственного вызова библиотеки ICMP / IcmpSendEcho ?

...