Announcement

Collapse
No announcement yet.

Überprüfen ob Port erreichbar

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Überprüfen ob Port erreichbar

    Hallo,
    in meinem Programm will ich überprüfen, ob eine IP-Adresse mti einem bestimmten Port erreichbar ist.

    Ich hab rausgefunden, dass es den befehl network.ping gibt, allerdings kann man da nur eine ip checken.

    allerdings wäre es wichtig, dass überprüft wird, ob der port erreichbar ist

    danke für die hilfe.

    mfg stash

  • #2
    Hallo,

    guckst du: http://stackoverflow.com/questions/570098/in-c-how-to-check-if-a-tcp-port-is-available


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      hallo,
      danke für die antwort. das mit dem tcpclient ist gut, funktioniert auch mit

      tcpClient.connect(ip,port)

      allerdings versucht mein prog dann ziemlich lange zu verbinden bis er schließlich doch abbricht

      kann man so ne art timeout eingeben, damit nur eine bestimmte zeitspanne versucht wird zu connecten?

      mfg stash
      Zuletzt editiert von Stash; 15.09.2009, 11:04.

      Comment


      • #4
        Hallo,

        es gibt keine Eigenschaft die das erlaubt. Allerdings kann die Anfrage asynchron gestartet werden und nach einem selbst festgelegten Timeout die (asynchrone) Anfrage bei Erfolglosigkeit abgebrochen werden.


        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          Sieh dir zur asynchronen Anfrage die BeginConnect Methode von TcpClient in der Hilfe an.

          PS. Ich lese zwischen den Zeilen das du da wahrscheinlich häufiger die Erreichbarkeit eines Ports testen willst. Ich hoffe der Rechner zum Port ist dein eigener. Ein fremder Besitzer könnte dir das als DOS Attacke auslegen. Dann droht das hier.

          Comment


          • #6
            hallo,

            danke für den tipp. allerdings hab ich mir dei beginconnect variante in der visual studio hilfe angeschaut, erkenne aber keine möglichkeit, ein timeout zu setzen.
            was wäre das denn für ein befehl?

            mfg stash

            Comment


            • #7
              @ ralf jansen: ja ist mein eigener rechner

              Comment


              • #8
                allerdings hab ich mir dei beginconnect variante in der visual studio hilfe angeschaut, erkenne aber keine möglichkeit, ein timeout zu setzen.
                Es gibt dabei auch keinen.

                BeginXXX kennzeichnet eine Methode eines asynchronen Vorgangs, d.h. diese wird in einem anderen Thread aus dem ThreadPool ausgeführt.....Siehe OpenBook

                [highlight=c#]
                using (TcpClient tcp = new TcpClient())
                {
                IAsyncResult result = tcp.BeginConnect("127.0.0.1", 80, null, null);
                System.Threading.WaitHandle waitHandle = result.AsyncWaitHandle;
                try
                {
                // Ein TimeOut von 5 Sekunden gestatten:
                if (!result.AsyncWaitHandle.WaitOne(TimeSpan.FromSeco nds(5), false))
                {
                tcp.Close();
                throw new TimeoutException();
                }
                }
                finally
                {
                tcp.EndConnect(result);
                waitHandle.Close();
                }
                }
                [/highlight]

                [highlight=vbnet]
                Using tcp As New TcpClient()
                * * Dim result As IAsyncResult = tcp.BeginConnect("127.0.0.1", 80, Nothing, Nothing)
                * * Dim waitHandle As System.Threading.WaitHandle = result.AsyncWaitHandle
                * * Try
                * * * * ' Ein TimeOut von 5 Sekunden gestatten:
                * * * * If Not result.AsyncWaitHandle.WaitOne(TimeSpan.FromSecond s(5), False) Then
                * * * * * * tcp.Close()
                * * * * * * Throw New TimeoutException()
                * * * * End If
                * * Finally
                * * * * tcp.EndConnect(result)
                * * * * waitHandle.Close()
                * * End Try
                End Using
                [/highlight]



                mfG Gü
                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                Comment


                • #9
                  super, der code funktioniert, vielen dank.

                  Comment


                  • #10
                    der code funktioniert
                    Ich weiß....



                    mfG Gü
                    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                    Comment

                    Working...
                    X