Port.dll

Impi2k

Mitglied
Hallo Community,
ich suche einen Weg alle freihen Ports eines Rechners zu testen bzw. bei Rückgabe "Ist frei!" sie auch zu listen.

Ich habe gegoogelt und in Erfahrung gebracht, dass man mit einer port.dll dies recht schnell und sauber erledigen kann.
Hat von euch jemand diese port.dll mit ein paar Tipps auf Lager?
Oder kennt jemand einen anderen leichteren Weg die offenen Ports zu listen.

Impi
 
Okey hat alles funktioniert vielen Dank!

Aber:
Wie sieht es jetzt aus wenn ich mit einer Schleife die offenen Ports von einem anderen Rechner abklopfen möchte.
Ich hab irgentwo gelesen, dass man es "per Hand" mit Hilfe von Telnet machen kann. Gibt es auch eine möglichkeit dies mit VB.NET zu realisieren?

Impi
 
Hier habe ich selber schnell ne Klasse gezaubert, ist aber in der Praxis nicht zu empfehlen die Lösung, da es irgendwie extrem langsam ist, er wartet beim Verbinden anscheinend eine Zeit lang, wenn es nicht funktioniert... Vielleicht weiss wer wie man dieses Problem umgehen kann?

Hier mein Code:

C#:
    class Program
    {
        static void Main(string[] args)
        {
            int startport = 20, endport = 25;
            
            PortTester.Port[] ports = new PortTester().CheckingTcpPortsOpen(startport, endport, "localhost");
            for (int i = startport; i <= endport; i++)
            {
                if (ports[i-startport].IsOpen)
                    Console.WriteLine("Port Nummer {0} ist offen", i);
                else
                    Console.WriteLine("Port Nummer {0} ist geschlossen" , i);
            }
            Console.ReadKey();
        }

    }
    
    class PortTester
    {
        
        public Port[] CheckingTcpPortsOpen(int startPort, int endPort, string host)
        {
            Port[] ports = new Port[endPort - startPort +1];
            for (int i = startPort; i <= endPort; i++)
            {
                TcpClient client = null;
                try
                {
                    client = new TcpClient(host, i);
                    //hat geklappt, port ist offen
                    ports[i - startPort] = new Port(i, true);
                    client.Close();
                }
                catch
                {
                    //hat nicht geklappt, port ist nicht offen
                    ports[i - startPort] = new Port(i, false);
                }
            }
            
            return ports;
        }


        public class Port
        {
            internal Port(int portNumber, bool isOpen)
            {
                this.portNumber = portNumber;
                this.isOpen = isOpen;
            }
            
            private int portNumber;
            private bool isOpen;
            
            public int PortNumber
            {
                get { return this.portNumber; }
            }
            public bool IsOpen
            {
                get { return this.isOpen;}
            }
        }
    }
 
Port-Scanner

Hallo Tutorialer!

Ich hab euch mal einen kleinen Portscanner geschrieben.
Dabei verwende einen ThreadPool wo alle Portscans entweder gleichzeitig
oder in einem bestimmten Intervall durchgefürhrt werden können.

In der Scanner.cs könnt ihr entweder TcpClient oder Socket definieren (#define)
und das jeweilige SocketObjekt wird verwendet. Spielt halt mal ein bissel damit rum...

//Edit: Hab den Anhang entfernt. Nehmt bitte das Release in dem nächsten Post.
 
Zuletzt bearbeitet:
Port-Scanner Update

Hallo nochmal!

Musste den Scanner updaten weil ich das Exception Handling anfangs,
als ich noch keinen ThreadPool verwendet hatte, innerhalb des MainThreads machen konnte.
Das das ganze jetzt aber in einen eigenen virtuellen Prozess abgefackelt wird
und sich Exceptions nicht in einem ThreadPool weiter reichen lassen,
musst ich noch ein Ereigniss für einen Verbindungsabbruch einbauen.

//Edit: Hab noch ein paar Dinge in der GUI verbessert. Jetzt sollte er ganz nett geworden sein. :)
Schaut euch die Sourcen mit dem Lutz Roeder's .NET Reflector an, wenn Ihr sie in VB haben wollt. ;)
 

Anhänge

  • 25258attachment.zip
    62,4 KB · Aufrufe: 105
Zuletzt bearbeitet:

Neue Beiträge

Zurück