Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.96/24: Рейтинг темы: голосов - 24, средняя оценка - 4.96
Treals
29 / 29 / 3
Регистрация: 25.05.2011
Сообщений: 308
1

Проверка портов - открыты или нет

30.07.2011, 01:34. Просмотров 4480. Ответов 30
Метки нет (Все метки)

Как программно сделать проверку портов? Допустим в текстбоксе пишешь порт нажимаешь на кнопку он этот порт проверяет и если он открыт в лабеле пишется что открыт... А если закрыт соответственно пишет что закрыт...

P.S

Я даже не знаю с чего начать ... А тема мне очень интересна
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2011, 01:34
Ответы с готовыми решениями:

Проверка установлен или нет EXCEL
Всем добрый вечер! Есть программа в которой по нажатию на одну из кнопок...

Определить рабочая ссылка или нет
Добрый день! Есть ссылка на iptv поток вида...

Как проверить происходит сплит или нет
Нужно каким-то способом узнать разбивается текст или нет если разбивется...

Как проверить есть ли файл на FTP или нет
В общем то из названия темы всё понятно, мне нужно сделать условие If...

Запуск решения на другом ПК (БД не найдена или нет доступа)
Приложение на VS12. Локальная БД SQL, созданная через встроенный мастер. На...

30
eJ_Studio
167 / 147 / 14
Регистрация: 13.07.2011
Сообщений: 477
30.07.2011, 04:54 2
сори за то что грязновато старался побырее написать

вот так можно получить все айпи сервера который хочешь проверить на порты.(все записи попадают в листбокс2)

vb.net
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
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ListBox2.Items.AddRange(clsGetPort.GetAllIp(TextBox1.Text, 80))
        Button1.Text = If(Button1.Text = "stop", "play", "stop")
     End Sub
 
Public Class clsGetPort
        Public Shared Function GetAllIp(ByVal serv As String, ByVal port_ As Integer) As String()
            Dim lip As New List(Of String)
            Try
                Dim ip As Net.IPHostEntry = Net.Dns.GetHostEntry(serv)
                Dim ip_ As Net.IPAddress = Nothing
                For Each ip_ In ip.AddressList
                    Dim endpoint_ As New Net.IPEndPoint(ip_, port_)
                    Dim tmpsock As New Net.Sockets.Socket(endpoint_.AddressFamily, Net.Sockets.SocketType.Stream, Net.Sockets.ProtocolType.Tcp)
                    tmpsock.Connect(endpoint_)
                                     If tmpsock.Connected Then
                        lip.Add(String.Format("{0}", ip_.ToString))
                        Continue For
                    End If
                    lip.Add(ip_.ToString)
                Next
            Catch ex As Exception
                lip.Add("Unknown ip")
            End Try
 
            Return lip.ToArray
 
        End Function
    End Class

Но так лучше не использовать, так как дальше вариант проще и быстрее(имхо)

vb.net
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
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
               Dim ip As Net.IPHostEntry = Net.Dns.GetHostEntry(TextBox2.Text) ' В текстбоксе2 - имя сервера(допустим [url]www.mail.ru[/url]..)
        For Each i As Net.IPAddress In ip.AddressList
            ListBox2.Items.Add(i.ToString) 'заполняем листбокс2 айпишками
        Next
 
        ListBox2.SelectedIndex =0 'выделяем допустим первый итем(иначе нужно переписывать некоторые строчки кода)
 
        Dim th As New Threading.Thread(AddressOf General)
        th.IsBackground = True 
        th.Start()
    End Sub
 
Sub General()
        Dim s As Net.Sockets.Socket
        'Dim i_ip As Net.IPAddress = Net.IPAddress.Parse(TextBox2.Invoke(New d(AddressOf return_selecteditem))) 
        'Dim i_ip As String = ListBox2.SelectedItem)
        Dim i_ip As Net.IPAddress = Net.Dns.GetHostEntry(TextBox1.Invoke(New d(AddressOf return_selecteditem))).AddressList(0)
        Dim ipe As Net.IPEndPoint = Nothing
        For i As Integer = NumericUpDown1.Value To NumericUpDown2.Value '&H7FFF
            conclusion.Invoke(New _D_(AddressOf invok), "Прослушивается порт №: " & i & "...")
            ipe = New Net.IPEndPoint(i_ip, i)
            s = New Net.Sockets.Socket(Net.Sockets.AddressFamily.InterNetwork, Net.Sockets.SocketType.Stream, Net.Sockets.ProtocolType.Tcp)
            's = New Net.Sockets.Socket(ipe.AddressFamily, Net.Sockets.SocketType.Stream, Net.Sockets.ProtocolType.Tcp)
            Try
                s.Connect(ipe)
                'If s.Connected Then
                'ListBox1.Items.Add("***CONNECT!*: Port- " & i & " : EndPoint: " & ipe.ToString)
                'End If
                conclusion.Invoke(New d_(AddressOf inaddition), Color.Blue, "***** Удачная попытка соединения c портом - " & i & " : по следующему конечному адресу: " & ipe.ToString & " *****" & ControlChars.CrLf)
                conclusion.Invoke(New d_(AddressOf inaddition), Color.FromKnownColor(KnownColor.WindowText), Environment.NewLine) 'Color.FromName("windowtext")
            Catch ex As Exception
                conclusion.Invoke(New _D_(AddressOf invok), "ERR:- " & i & " :" & ex.Message & vbCrLf)
            End Try
            s.Close()
        Next
        PictureBox1.Image = Image.FromFile("F:\разное\VS2010ImageLibrary\_Common Elements\Objects\Web_Globe.png")
    End Sub
 
    'инвоки для контролов(иначе будут исключения, думаю понятно на что)
    Delegate Function d()
    Function return_selecteditem() As String
        Return TextBox1.Text ' тут возвращаем в процедуру  "General"  выделенный(из литбокса_2 в текстбокс_1) айпи 
    End Function
 
    Delegate Sub d_(ByVal clr As Color, ByVal _str As String)
    Sub inaddition(ByVal clr As Color, ByVal _str As String)
        conclusion.SelectionColor = clr
        conclusion.SelectedText = _str
    End Sub
 
    Delegate Sub _D_(ByVal str As String)
    Sub invok(ByVal _str As String)
        If conclusion.InvokeRequired Then
            conclusion.BeginInvoke(New _D_(AddressOf invok), _str)
        Else
            conclusion.AppendText(_str & ControlChars.NewLine)
        End If
    End Sub
 
  Private Sub ListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox2.SelectedIndexChanged
        If ListBox2.SelectedItem Is Nothing Then Return
        TextBox1.Text = ListBox2.SelectedItem ' как только выделился нужный нам итем в листбоксе_2 то он сразу же отобразится в текстбоксе_1
    End Sub
На форму закинь TextBox2 - сервер : TextBox1 - айпи который проверяем(в итоге, его можно поменять выбрав в листбоксе другой selectedIndex)
ListBox2 - где отобразятся все айпи сервера(во множественном числе - потому что в основном мощные сервера имеют не один адрес)
NumericUpDown1 - начальный порт
NumericUpDown2 - конечный . Но сразу скажу, что кроме 80 порта больше не куда не залезишь(не подконнектишься), в основном только он открыт(так сказать негласное правило)
conclusion(RichTextBox) - где отображается вся информация..
Button1 думаю понятно для чего
П.С.
Я и сам не люблю ковыряться в чужом коде(чужие мысли потемки, особенно когда кодер через чур правильный, когда переменновывается все подряд, аж префикс соблюдается)
Но тут запутать может только инвоки и делегаты
Как то так

Добавлено через 3 минуты
а, да, там где закомментирован код, то извиняй, можешь не смотреть, но вообще это я для себя оставляю как другие варианты решения задачи
2
Treals
29 / 29 / 3
Регистрация: 25.05.2011
Сообщений: 308
30.07.2011, 05:16  [ТС] 3
А что в строке сервер надо писать если я хочу просканить себя?
0
eJ_Studio
167 / 147 / 14
Регистрация: 13.07.2011
Сообщений: 477
30.07.2011, 05:30 4
в тупик поставил, сча попробую, погоди..

Добавлено через 5 минут
пиши либо так
vb.net
1
Environment.UserDomainName либо так Net.Dns.GetHostName
а лучше сразу занеси в событие кнопки эти строчки(для пробы)
допустим так(ну как и выше, просто нагляднее)
vb.net
1
2
3
4
 Dim ip As Net.IPHostEntry = Net.Dns.GetHostEntry(Net.Dns.GetHostName) 'Environment.UserDomainName)
        For Each i As Net.IPAddress In ip.AddressList
            ListBox2.Items.Add(i.ToString) 'заполняем листбокс2 айпишками
        Next
localhost не пиши, будет проверять не подключенную сеть

Добавлено через 1 минуту
vb.net
1
My.Computer.Name
или это. Как говорится вариантов кучка

Добавлено через 2 минуты
попробуй с www.yandex.ru, у него много айпи, ты хоть какой попробывал(какэто слово пишется не помню в полшестого сайт?
1
Treals
29 / 29 / 3
Регистрация: 25.05.2011
Сообщений: 308
30.07.2011, 05:32  [ТС] 5
Спасибо ... Помог... Теперь буду сам разбираться и пробовать )

Добавлено через 1 минуту
Яндекс, майл, сайт своей сети... Все норм работает ... Везде кроме сайта сети открыт тока 80 порт как ты и сказал
0
eJ_Studio
167 / 147 / 14
Регистрация: 13.07.2011
Сообщений: 477
30.07.2011, 05:35 6
что значит своей сети яндекс и т.д...они что как то маршрутизируются через другие адреса?
А сайт твоей сети через какой порт? мне интересно хотя бы 2 получал открытых? не где проверить ёма
0
Treals
29 / 29 / 3
Регистрация: 25.05.2011
Сообщений: 308
30.07.2011, 05:39  [ТС] 7
www.sunnet.net.ru

Я не помню уже какие там точно порты открыты... Лень заного сканить
0
eJ_Studio
167 / 147 / 14
Регистрация: 13.07.2011
Сообщений: 477
30.07.2011, 05:46 8
вся соль в твоем вопросе это перебор порта в классе Net.IPEndPoint .
ipe = New Net.IPEndPoint(i_ip, i) (тут, просто перебор портов с определенным заранее айпи, правда у меня соединение оч долго происходит, на каждый порт секунд по 15, ужос, а вот если на свой домен проверять то быстро, хз от чего это зависит, мб просто ближе )


Добавлено через 2 минуты
хочешь вскрыть сайт?

Добавлено через 3 минуты
там тока один айпи, и как то странно ты отсканировал множество портов, дабы говорить что все другие закрыты
0
Treals
29 / 29 / 3
Регистрация: 25.05.2011
Сообщений: 308
30.07.2011, 05:48  [ТС] 9
Он мне несколько показал 80 и еще какие то два... Нет сайт вскрыть не хочу ... Просто интересна стала эта тема
0
eJ_Studio
167 / 147 / 14
Регистрация: 13.07.2011
Сообщений: 477
30.07.2011, 22:59 10
а разве можно свои порты прослушивать?
0
Treals
29 / 29 / 3
Регистрация: 25.05.2011
Сообщений: 308
30.07.2011, 23:48  [ТС] 11
Да вроде можно ... Покрайне мере через сайт это сделать можно
http://www.2ip.ru/check-port/?PHPSES...01d1c0070ef7fc
0
eJ_Studio
167 / 147 / 14
Регистрация: 13.07.2011
Сообщений: 477
31.07.2011, 02:08 12
просканировал 3000 портов(1 час заняло) и не один не отвечает..Значит нельзя себя слушать? или нужно фаерволл подстраивать, хз
0
Treals
29 / 29 / 3
Регистрация: 25.05.2011
Сообщений: 308
31.07.2011, 02:26  [ТС] 13
Насчет файрволла я не знаю... Но он в полне может блочить... Вот проверка через сай
[IMG]http://s016.***********/i335/1107/e0/f660a46ebb10.jpg[/IMG]
[IMG]http://s52.***********/i137/1107/ea/1feb259ecb1d.jpg[/IMG]
[IMG]http://s13.***********/i186/1107/c1/f6587f73a705.jpg[/IMG]

А с проги не хочет что то

Добавлено через 23 секунды

Не по теме:

Сори что ссылки не нашел тег для картинок :)

0
eJ_Studio
167 / 147 / 14
Регистрация: 13.07.2011
Сообщений: 477
31.07.2011, 02:30 14
ого, прикольно ,скинь адрес сайта. Значит неверно указываем имя хоста. Хотя как еще вписывать свой хост не понятно кроме энтих что выше
0
Treals
29 / 29 / 3
Регистрация: 25.05.2011
Сообщений: 308
31.07.2011, 02:36  [ТС] 15
http://www.2ip.ru/check-port/
По идее должен быть localhost но ты вроде говорил что так не прокатывает
0
eJ_Studio
167 / 147 / 14
Регистрация: 13.07.2011
Сообщений: 477
31.07.2011, 03:04 16
непойму чего то. При заходе на этот сайт он мне показывает мой айпи, но это не мой айпи. Или это дело в роутере, он видать так сделан, к сожалению я в первый раз связался с роутором и ничего про них не знаю. Так вот: я стал опять сканить порты с хостом "localhost" и оказалось что открыт 135 порт. Ввожу на сайте этот порт и оказывается что порт закрыт. Проверяю через сайт 80 порт, у меня он открыт, а через код не открыт. Может попробовать сканировать через тот айпи что сайт указывает
0
Treals
29 / 29 / 3
Регистрация: 25.05.2011
Сообщений: 308
31.07.2011, 03:09  [ТС] 17
При заходе на этот сайт он мне показывает мой айпи, но это не мой айпи.
Он показывает твой внешний айпи (не локальный)... Если конечно ты к прокси не подключен
0
Treals
29 / 29 / 3
Регистрация: 25.05.2011
Сообщений: 308
31.07.2011, 03:09  [ТС] 18
При заходе на этот сайт он мне показывает мой айпи, но это не мой айпи.
Он показывает твой внешний айпи (не локальный)... Если конечно ты к прокси не подключен
0
eJ_Studio
167 / 147 / 14
Регистрация: 13.07.2011
Сообщений: 477
31.07.2011, 03:12 19
не получается с этим айпи, ошибка "этот хост не известен". Внешний айпи роутера получается? или сетевой карты
0
Treals
29 / 29 / 3
Регистрация: 25.05.2011
Сообщений: 308
31.07.2011, 03:13  [ТС] 20
Сайты сканит айпи получает порты сканирует... А вот сам себя не фига не хочет... Уже как только не пробовал
0
31.07.2011, 03:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2011, 03:13

Как проверить пуст или нет буфер обмена?
Есть острая необходимость проверить пуст или нет БО. Как это можно сделать...

Как определить, в фокусе или нет стороннее приложение
Доброго времени суток. Подскажите пожалуйста, как определить в фокусе или нет...

Как узнать: свёрнуто приложение (форма) или нет?
Есть форма, и надо узнать: свёрнуто приложение (форма) или нет ??? Буду...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru