Jump to content

Pingar um IP e verificar se este se encontra online


vaurdan

Recommended Posts

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)😉

http://www.neopt.org <- O meu blog xD
Link to comment
Share on other sites

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".

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

http://www.neopt.org <- O meu blog xD
Link to comment
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.