Odpowiedz 
 
Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Autor Wiadomość
heysel Offline
Stały bywalec
*****

Liczba postów: 2,586
Dołączył: Jan 2007
Reputacja: 0
Post: #1
C#
Programuje może tutaj ktoś w tym języku ? Cosik ostatnio jak mam czas to próbuję i takie coś wypłodziłem w pół godziny.
Kod:
using System;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace skaner
{
    class skaner
    {
        static void Main()
        {
            string IP;
            int portpocz = 0;
            int portkon = 0;
            int i = 0;
            IPAddress IP1 = IPAddress.Parse("127.0.0.1");
            Console.Write("Podaj IP do przeskanowania : ");
            IP = Console.ReadLine();
            try
            {
                IP1 = IPAddress.Parse(IP);
            }
            catch (Exception e)
            {
                Console.WriteLine("Zły adres IP !");
                Console.ReadKey();
                System.Environment.Exit(1);
            }
            finally
            {
            }
            Console.WriteLine("Podałeś IP : {0}", IP);
            Console.WriteLine("Zakres portów do przeskanowania");
            Console.Write("Od : ");
            try
            {
                portpocz = Convert.ToInt32(Console.ReadLine());
            }
            catch (Exception e)
            {
                Console.WriteLine("Naucz się odróżniać literki od cyferek !");
                Console.ReadKey();
                System.Environment.Exit(1);
            }
            finally
            {
            }
            Console.Write("Do : ");
            try
            {
                portkon = Convert.ToInt32(Console.ReadLine());
            }
            catch (Exception e)
            {
                Console.WriteLine("Naucz się odróżniać literki od cyferek !");
                Console.ReadKey();
                System.Environment.Exit(1);
            }
            finally
            {
            }
            if (portpocz > portkon)
            {
                i = portpocz;
                portpocz = portkon;
                portkon = i;
            }
            Socket gniazdo = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            i = portpocz;
            IPEndPoint komp = new IPEndPoint(IP1, i);
            while (i <= portkon)
            {
                try
                {
                    gniazdo.Connect(komp);
                }
                catch (SocketException e)
                {
                    Console.WriteLine("Port {0} zamknięty !", i);
                }
                finally
                {
                }
                if (gniazdo.Connected == true)
                {
                    Console.WriteLine("Port {0} otwarty !", i);
                    gniazdo.Shutdown(SocketShutdown.Both);
                    gniazdo.Close();
                    gniazdo = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                }
                i++;
                komp = new IPEndPoint(IP1, i);
            }
            Console.WriteLine("Koniec skanowania !");
            Console.ReadKey();
        }
    }
}
Taki niezwykle prymitywny skaner portów. I tak się teraz patrzę na to dzieło jak je udoskonalić ... Jakieś sugestie ?

Steven Weinberg
http://www.youtube.com/watch?v=yFH1bXg3ni8
"All isolated systems evolve according to the Schrodinger Equation"
Hugh Everett
03-09-2008 23:53
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
PS Offline
Stały bywalec
*****

Liczba postów: 912
Dołączył: Dec 2007
Reputacja: 0
Post: #2
 
nie znam akurat tego języka, ale:
-3 ekrany zajmuje 1 metoda, a każdy kod, który da się zamknąć w jakąś całość powinien w całości być możliwy do objęcia wzrokiem - możnaby więc rozbić na metodę przyjmowania danych, metodę połączenia z konkretnym portem, metodę skanowania portów
-uzywasz wyjątków, których nie przekazujesz do szerszego kontekstu tylko po prostu kończysz program. Czemu nie zamkniesz wszystkiego w 1 blok try?
-nie wiem jak w C#, ale chyba w ogolnie przyjetej notacji nazwy klas piszemy dużą literą
-klasa skaner w tej formie w sumie jest tylko po to byś mógł wykonać statyczną metodę Main(). -programujesz nawet nie-proceduralnie w języku, który został stworzony do tworzenia zorientowanego obiektowo
04-09-2008 00:19
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
heysel Offline
Stały bywalec
*****

Liczba postów: 2,586
Dołączył: Jan 2007
Reputacja: 0
Post: #3
 
Kod:
using System;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace Skaner
{
    class Porty
    {
        public int portpocz = 0;
        public int portkon = 0;
        public void zakres_portow()
        {
            Console.WriteLine("Zakres portów do przeskanowania");
            try
            {
                Console.Write("Od : ");
                portpocz = Convert.ToInt32(Console.ReadLine());
                Console.Write("Do : ");
                portkon = Convert.ToInt32(Console.ReadLine());
            }
            catch (Exception e)
            {
                Console.WriteLine("Zły numer portu !");
                zakres_portow();
            }
            finally
            {
            }
        }
    }

    class IP
    {
        private string numer_IP;
        public IPAddress numer_IP1 = IPAddress.Parse("127.0.0.1");
        public void wczytaj_IP()
        {
            Console.Write("Podaj IP do przeskanowania : ");
            numer_IP = Console.ReadLine();
            try
            {
                numer_IP1 = IPAddress.Parse(numer_IP);
            }
            catch (Exception e)
            {
                Console.WriteLine("Zły adres IP !");
                wczytaj_IP();
            }
            finally
            {
            }
        }
    }

    class Skaner
    {
        static void Main()
        {
            Porty porty = new Porty();
            IP IP = new IP();
            IP.wczytaj_IP();
            porty.zakres_portow();
            skanuj(IP.numer_IP1, porty.portpocz, porty.portkon);
            Console.ReadKey();
        }

        static void skanuj(IPAddress numer_IP, int portpocz, int portkon)
        {
            Socket gniazdo = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPEndPoint komp = new IPEndPoint(numer_IP, portpocz);
            int i;
            if (portpocz > portkon)
            {
                i = portpocz;
                portpocz = portkon;
                portkon = i;
            }
            i = portpocz;
            while (i <= portkon)
            {
                try
                {
                    gniazdo.Connect(komp);
                }
                catch (SocketException e)
                {
                    Console.WriteLine("Port {0} zamknięty !", i);
                }
                finally
                {
                }
                if (gniazdo.Connected == true)
                {
                    Console.WriteLine("Port {0} otwarty !", i);
                    gniazdo.Shutdown(SocketShutdown.Both);
                    gniazdo.Close();
                    gniazdo = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                }
                i++;
                komp = new IPEndPoint(numer_IP, i);
            }
            Console.WriteLine("Koniec skanowania !");
        }
    }
}
Siadłem, kolejne pół godziny i tak przetworzyłem tego potworka.

Steven Weinberg
http://www.youtube.com/watch?v=yFH1bXg3ni8
"All isolated systems evolve according to the Schrodinger Equation"
Hugh Everett
04-09-2008 17:55
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
boleklolek Offline
Początkujący
**

Liczba postów: 1
Dołączył: Apr 2015
Reputacja: 0
Post: #4
RE: C#
ja kiedyś próbowałem się nauczyć i jak C++ opanowałem to tak już # nie Smutny

Mieszkania dla młodych łódź
07-04-2015 10:39
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
dicitynta Offline
Początkujący
**

Liczba postów: 3
Dołączył: Apr 2015
Reputacja: 0
Post: #5
RE: C#
no przecież opanowanie C# , jak się umie C++ to nie takie trudne Uśmiech

champions league online na meczyki.com pl
14-04-2015 14:48
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
juzeff Offline
Początkujący
**

Liczba postów: 11
Dołączył: Jun 2015
Reputacja: 0
Post: #6
RE: C#
Ja programuję, ale w Pythonie Uśmiech

Pozdrawiam, Józef
Galicyjska Szkoła Smaku
27-06-2015 20:45
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
zenekbaron Offline
Początkujący
**

Liczba postów: 1
Dołączył: Oct 2015
Reputacja: 0
Post: #7
RE: C#
Ja znam jedynie PHP i MySQL. Więcej niestety jeszcze się nie nauczyłem.

http://qbaservice.pl
21-10-2015 15:46
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
piotrkacperek Offline
Początkujący
**

Liczba postów: 1
Dołączył: Dec 2015
Reputacja: 0
Post: #8
RE: C#
C# to bardzo fajny język programowania. Zwłaszcza możliwość programowania okienkowego. Muszę się nauczyć tego języka.

emt-systems.pl
05-12-2015 08:04
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
horoszkod Offline
Początkujący
**

Liczba postów: 2
Dołączył: Dec 2015
Reputacja: 0
Post: #9
RE: C#
W c# świetnie się pisze bo szybko. Dodatkowo bogactwo dostępnych narzędzi, frameworków jest imponujące.
17-12-2015 10:39
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Skocz do:


Użytkownicy przeglądający ten wątek:
1 gości

Wróć do góryWróć do forów