Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 1
Регистрация: 16.12.2016
Сообщений: 12
1

Сканер портов. Неправильный формат IP-адреса

26.12.2016, 07:34. Показов 1276. Ответов 2

Author24 — интернет-сервис помощи студентам
Пишу я сканер портов, нашла в инете кучу копий одного и того же кода для windows form application...
Хочу сканер асинхронный, и нужно консольный. Попробовала подогнать код, но что то пошло не так..
В 50-й строке выдает эксепшн - мол, не тот формат адреса. погуглила. если не ошибаюсь, в этом месте метод вместо hostName ждет строку вида "176.15.146.56". пыталась много чего туда запихнуть, например, pingReply.Address и кучу вариаций... не выходит. подскажите, в чем косяк?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
using System.Net.NetworkInformation;
 
 
namespace NmapSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            foreach (string hostName in args)
                Scan(hostName);
        }
 
        public static void Scan(string hostName) {
            Console.WriteLine(String.Format("Название хоста: {0}", hostName));
            IPHostEntry myHost = Dns.GetHostEntry(hostName);
            Ping ping = new Ping();
            PingReply pingReply = ping.Send(hostName);
 
            try
            {
                Console.WriteLine("Время ответа: {0}", pingReply.RoundtripTime);
                Console.WriteLine("Cтатус: {0}", pingReply.Status);
                Console.WriteLine("IP: {0}", pingReply.Address);
 
                Console.WriteLine();
 
            }
            catch (PingException e)
            {
                Console.WriteLine(e.Message);
            }
 
            Console.WriteLine("Enter start port");
            int startPort = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Enter end port");
            int endPort = Convert.ToInt32(Console.ReadLine());
 
            IPAddress ipAddr = IPAddress.Parse(hostName);
            for (int i = startPort; i <= endPort; i++)
            {
                //Создаем сокет
                IPEndPoint ipEndP = new IPEndPoint(ipAddr, i);
                Socket mySoc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
 
                //Пробуем подключится к указанному хосту
                IAsyncResult asyncResult = mySoc.BeginConnect(ipEndP, new AsyncCallback(ConnectCallback), mySoc);
 
 
                if (!asyncResult.AsyncWaitHandle.WaitOne(30, false))
                {
                    mySoc.Close();
                    Console.WriteLine("Порт {0} закрыт", i.ToString());
                }
                else
                {
                    mySoc.Close();
                    Console.WriteLine("Порт {0} открыт", i.ToString());
                }
            }
        }
 
        private static void ConnectCallback(IAsyncResult ar)
        {
            try
            {
                Socket client = (Socket)ar.AsyncState;
                client.EndConnect(ar);
                //connectDone.Set();
            }
            catch (Exception e)
            {
            }
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.12.2016, 07:34
Ответы с готовыми решениями:

Сканер портов
Всем привет.Пишу сканер портов.Как мне сделать так,что бы вывод шёл в главное окно?то есть нажимаю...

Сканер портов
Ребята, не кидайтесь тапками ! Итак замучился уже :( На конфе все в маны посылают, по кентам никто...

Сканер портов
Пдскажите, пожалуйста, алгоритм для сканера портов.

Сканер портов
Хочу написать сканер портов,но что то не получается.Вот код: #include &quot;StdAfx.h&quot; #include...

2
309 / 309 / 215
Регистрация: 24.09.2013
Сообщений: 771
26.12.2016, 11:06 2
medwedizaa,
C#
1
IPAddress ipAddr = IPAddress.Parse(hostName);
Замените на
C#
1
IPAddress ipAddr = myHost.AddressList[0];
0
0 / 0 / 1
Регистрация: 16.12.2016
Сообщений: 12
27.12.2016, 09:29  [ТС] 3
Решила проблему несколько иначе:
C#
1
2
string host1 = Convert.ToString(pingReply.Address);
IPAddress ipAddr = IPAddress.Parse(host1);
0
27.12.2016, 09:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.12.2016, 09:29
Помогаю со студенческими работами здесь

Сканер портов
Всем привет, вот нашел пример скрипта, хотелось бы чтобы вы мне помогли или направили как...

Сканер портов
&lt;?php for($i=1; $i&lt;=100; $i++) { $s = socket_create(AF_INET, SOCK_STREAM, 0);...

Сканер портов
Всем добрый день! У меня возникла проблема при реализации сканера портов под Линукc: Программа...

Сканер портов
Вопрос такой: можно ли написать сканер портов, использующий различные методы сканирования(TCP SYN,...

Сканер портов
Всем привет :) Не могу реализовать сканер по диапазону ip-адресов и на определённый порт(по...

Сканер портов
Совсем ничего не знаю по данной теме. Подскажите что почитать.Если можно подскажите программу для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru