Jump to content
miguel5655

Ping vs WebRequest

Recommended Posts

miguel5655

Boas pessoal.

Estou a fazer uma aplicação que é utilizada por clientes, mas muitos deles devem utilizar proxie para se ligarem á internet e a aplicação deveria conseguir enviar emails.

As minhas dúvidas são as seguintes:

Qual as diferenças entre utilizar Ping e WebRequest? Existem diferenças em testar a ligação com estas formas? :

PING:

My.Computer.Network.Ping("www.google.com", 500)
**
Dim tcp As New TcpClient()
tcp.Connect("192.**.**.**", Convert.ToInt16(125)

Dim request As WebRequest = WebRequest.Create(_url)
request.Credentials = CredentialCache.DefaultCredentials

Outra questão que estou a pesquisar, é no WebRequest ao utilizar CredentialCache.DefaultCredentials estou a ir buscar as definições proxy default do IE?

Desde já obrigado

Edited by miguel5655

Share this post


Link to post
Share on other sites
ribeiro55

Uma diferença grandona, aliás.

Um ping é enviado via protocolo ICM e um webrequest via HTT.

Só este facto já não garante que a resposta de um valide o outro.

O teste à ligação deveria existir com a operação em si, ou no mínimo com uma stub no mesmo protocolo.

Não há relação das credenciais com o proxy. Pelo menos nada explícito.

Deverás indicar directamente a informação do proxy:

Dim request As WebRequest = WebRequest.Create(_url)
request.Credentials = CredentialCache.DefaultCredentials
request.Proxy = New WebProxy(New Uri(_urlproxy), False, Nothing, New NetworkCredential("userproxy", "passproxy"))

Edited by ribeiro55

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
miguel5655

Obrigado pela explicação.Grande ajuda.

Só mais uma coisa se eu quiser utilizar as definições proxy definidas no IE está correto isto?

Dim request As WebRequest = WebRequest.Create(_url)
request.Credentials = CredentialCache.DefaultCredentials
request.Proxy = WebRequest.GetSystemWebProxy()

Já agora se eu quiser verificar se o computador está ligado á internet via proxy ou não, como é que posso fazer??

Share this post


Link to post
Share on other sites
miguel5655

Bem estive a fazer uns testes e deixo aqui como fiz:

Para saber se a ligação é feita por proxy utilizo uma API do windows que me retorna uma flag com o valor. Não sei se é a maneira mais correta ou não, pois retorna-me varias flags, mas consta lá a do proxy portanto deduzo que ao aparecer a flag proxy a que seja usada é a proxy.

    [DllImport("wininet.dll", CharSet = CharSet.Auto)]
    private extern static bool InternetGetConnectedState(ref InternetConnectionState_e lpdwFlags, int dwReserved);
    [Flags]
    enum InternetConnectionState_e : int
    {
	    INTERNET_CONNECTION_MODEM = 0x01,
	    INTERNET_CONNECTION_LAN = 0x02,
	    INTERNET_CONNECTION_PROXY = 0x04,
	    INTERNET_RAS_INSTALLED = 0x10,
	    INTERNET_CONNECTION_OFFLINE = 0x20,
	    INTERNET_CONNECTION_CONFIGURED = 0x40
    }

Fiz um teste ao meu código acima e vi que está correto. Se estiver uma proxy no IE configurada ele vai buscar os valores.

Obrigado

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.