Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

vaurdan

Pingar um IP e verificar se este se encontra online

Mensagens Recomendadas

vaurdan    0
vaurdan

eu tenho este codigo:

            Ping pingSender = new Ping();
            PingOptions options = new PingOptions();

            // Use the default Ttl value which is 128,
            // but change the fragmentation behavior.
            options.DontFragment = true;

            // Create a buffer of 32 bytes of data to be transmitted.
            string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
            byte[] buffer = Encoding.ASCII.GetBytes(data);
            int timeout = 120;
            string address = "http://www.microsoft.org";
            PingReply reply = pingSender.Send (address, timeout, buffer, options);
            if (reply.Status == IPStatus.Success)
            {
                MessageBox.Show("Online");
            }
            else
            {
                MessageBox.Show("Offline");
            }

colocado no private void Form1_Load

mas ta-me a dar um erro:

System.Net.NetworkInformation.PingException was unhandled

Message="An exception occurred during a Ping request."

  Source="System"

  StackTrace:

      at System.Net.NetworkInformation.Ping.Send(String hostNameOrAddress, Int32 timeout, Byte[] buffer, PingOptions options)

      at WindowsApplication1.Form1.Form1_Load(Object sender, EventArgs e) in C:\Documents and Settings\Henrique\Os meus documentos\Visual Studio 2005\Projects\aTuaEscola\aTuaEscola\Form1.cs:line 84

      at System.Windows.Forms.Form.OnLoad(EventArgs e)

      at System.Windows.Forms.Form.OnCreateControl()

      at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)

      at System.Windows.Forms.Control.CreateControl()

      at System.Windows.Forms.Control.WmShowWindow(Message& m)

      at System.Windows.Forms.Control.WndProc(Message& m)

      at System.Windows.Forms.ScrollableControl.WndProc(Message& m)

      at System.Windows.Forms.ContainerControl.WndProc(Message& m)

      at System.Windows.Forms.Form.WmShowWindow(Message& m)

      at System.Windows.Forms.Form.WndProc(Message& m)

      at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)

      at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)

      at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

      at System.Windows.Forms.SafeNativeMethods.ShowWindow(HandleRef hWnd, Int32 nCmdShow)

      at System.Windows.Forms.Control.SetVisibleCore(Boolean value)

      at System.Windows.Forms.Form.SetVisibleCore(Boolean value)

      at System.Windows.Forms.Control.set_Visible(Boolean value)

      at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)

      at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)

      at System.Windows.Forms.Application.Run(Form mainForm)

      at WindowsApplication1.Program.Main() in C:\Documents and Settings\Henrique\Os meus documentos\Visual Studio 2005\Projects\aTuaEscola\aTuaEscola\Program.cs:line 17

      at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)

      at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)

      at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()

      at System.Threading.ThreadHelper.ThreadStart_Context(Object state)

      at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)

      at System.Threading.ThreadHelper.ThreadStart()

Ele compila, mas na execução dá esse erro (Linha: PingReply reply = pingSender.Send (address, timeout, buffer, options);)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
M6    71
M6

Se fazes ping e ele responde é porque o servidor está "up and running".

No entanto, pelo facto do serviço de ping te responder não quer dizer que todos os serviços estejam "up and running".

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
garmg    0
garmg

Assim de repente, o que me salta à vista, é estares a colocar um endereço no formato http:// (um URI) ao invés de um endereço IP ou Hostname.

Olhando para a definição no MSDN:

When sending the request, you must specify the remote computer. You can do this by providing a host name string, an IP address in string format, or an IPAddress object.

Como não conheço a linguagem C# e sendo esta uma linguagem desenvolvida pela MS (Salvo erro?) até dou o benefício da dúvida em relação a isso estar certo ou não, mas todavia, sugiro que vás pela minha sugestão. Em última instancia, uma vez que não me dás ideia de conheceres o protocolo, sugiro que leias o RFC 792 que especifica o protocolo de ICMP, nomeadamente os ping requests e replies.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
vaurdan    0
vaurdan

Assim de repente, o que me salta à vista, é estares a colocar um endereço no formato http:// (um URI) ao invés de um endereço IP ou Hostname.

Olhando para a definição no MSDN:

When sending the request, you must specify the remote computer. You can do this by providing a host name string, an IP address in string format, or an IPAddress object.

Pois isso do http foi completa distração :/ Esquecime completamente que até no comando ping do windows não podemos por http xD Enfim...

Como não conheço a linguagem C# e sendo esta uma linguagem desenvolvida pela MS (Salvo erro?) até dou o benefício da dúvida em relação a isso estar certo ou não, mas todavia, sugiro que vás pela minha sugestão. Em última instancia, uma vez que não me dás ideia de conheceres o protocolo, sugiro que leias o RFC 792 que especifica o protocolo de ICMP, nomeadamente os ping requests e replies.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade