Форум программистов, компьютерный форум, киберфорум
Наши страницы

Visual Basic .NET

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.85
Treals
29 / 29 / 3
Регистрация: 25.05.2011
Сообщений: 308
#1

Проверка портов - открыты или нет - Visual Basic .NET/.NET 4.x

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

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

P.S

Я даже не знаю с чего начать ... А тема мне очень интересна
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2011, 01:34
Я подобрал для вас темы с готовыми решениями и ответами на вопрос .NET 4.x Проверка портов - открыты или нет (Visual Basic .NET):

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

Определить рабочая ссылка или нет - Visual Basic .NET
Добрый день! Есть ссылка на iptv поток вида http://212.164.216.198:1234/udp/233.7.70.200:5000 как можно силами vb.net определить...

Как проверить происходит сплит или нет - Visual Basic .NET
Нужно каким-то способом узнать разбивается текст или нет если разбивется выполняес что-то если нет то дальше продолжаем Dim...

.NET 4.x Как проверить есть ли файл на FTP или нет - Visual Basic .NET
В общем то из названия темы всё понятно, мне нужно сделать условие If Файл_на_фтп_НЕсуществует then 'тут код else 'тут другой код ...

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

Как проверить пуст или нет буфер обмена? - Visual Basic .NET
Есть острая необходимость проверить пуст или нет БО. Как это можно сделать средствами vb.net? Раньше было просто: Public Declare...

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
31.07.2011, 02:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2011, 02:36
Привет! Вот еще темы с ответами:

Как узнать: свёрнуто приложение (форма) или нет? - Visual Basic .NET
Есть форма, и надо узнать: свёрнуто приложение (форма) или нет ??? Буду благодарен за помощь !!!

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

Как узнать - пустая ячейка или нет на листе Excel - Visual Basic .NET
если ячейка В2 пустая записываю данные в нее если не пустая то переход на В3 и так далее до В25

Брак или нет и проверка - Жесткие диски
1)купил в интернете HDD после установки в сист блок только с 5 попытки удалось форматнуть а после проверки программой victoria обнаружил 3...


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

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

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