Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.58/33: Рейтинг темы: голосов - 33, средняя оценка - 4.58
30 / 30 / 3
Регистрация: 25.05.2011
Сообщений: 308
1
.NET 4.x

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

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

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

P.S

Я даже не знаю с чего начать ... А тема мне очень интересна
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.07.2011, 01:34
Ответы с готовыми решениями:

Брак или нет и проверка
1)купил в интернете HDD после установки в сист блок только с 5 попытки удалось форматнуть а после...

Проверка таблиц есть или нет
Всем привет!!! У меня один вопрос можно ли узнать в базе таблица есть или нет, например хочу...

Проверка существует ли изображение или нет
Всем здрасти. Вот я решил написать такую маленькую простую программку галерею рисунков, ну в...

Проверка: загружена форма или нет?
Как узнать загружена (Form2) или нет?

30
169 / 149 / 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
30 / 30 / 3
Регистрация: 25.05.2011
Сообщений: 308
30.07.2011, 05:16  [ТС] 3
А что в строке сервер надо писать если я хочу просканить себя?
0
169 / 149 / 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
30 / 30 / 3
Регистрация: 25.05.2011
Сообщений: 308
30.07.2011, 05:32  [ТС] 5
Спасибо ... Помог... Теперь буду сам разбираться и пробовать )

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

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


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

Добавлено через 3 минуты
там тока один айпи, и как то странно ты отсканировал множество портов, дабы говорить что все другие закрыты
0
30 / 30 / 3
Регистрация: 25.05.2011
Сообщений: 308
30.07.2011, 05:48  [ТС] 9
Он мне несколько показал 80 и еще какие то два... Нет сайт вскрыть не хочу ... Просто интересна стала эта тема
0
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
30.07.2011, 22:59 10
а разве можно свои порты прослушивать?
0
30 / 30 / 3
Регистрация: 25.05.2011
Сообщений: 308
30.07.2011, 23:48  [ТС] 11
Да вроде можно ... Покрайне мере через сайт это сделать можно
http://www.2ip.ru/check-port/?... c0070ef7fc
0
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
31.07.2011, 02:08 12
просканировал 3000 портов(1 час заняло) и не один не отвечает..Значит нельзя себя слушать? или нужно фаерволл подстраивать, хз
0
30 / 30 / 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
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
31.07.2011, 02:30 14
ого, прикольно ,скинь адрес сайта. Значит неверно указываем имя хоста. Хотя как еще вписывать свой хост не понятно кроме энтих что выше
0
30 / 30 / 3
Регистрация: 25.05.2011
Сообщений: 308
31.07.2011, 02:36  [ТС] 15
http://www.2ip.ru/check-port/
По идее должен быть localhost но ты вроде говорил что так не прокатывает
0
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
31.07.2011, 03:04 16
непойму чего то. При заходе на этот сайт он мне показывает мой айпи, но это не мой айпи. Или это дело в роутере, он видать так сделан, к сожалению я в первый раз связался с роутором и ничего про них не знаю. Так вот: я стал опять сканить порты с хостом "localhost" и оказалось что открыт 135 порт. Ввожу на сайте этот порт и оказывается что порт закрыт. Проверяю через сайт 80 порт, у меня он открыт, а через код не открыт. Может попробовать сканировать через тот айпи что сайт указывает
0
30 / 30 / 3
Регистрация: 25.05.2011
Сообщений: 308
31.07.2011, 03:09  [ТС] 17
При заходе на этот сайт он мне показывает мой айпи, но это не мой айпи.
Он показывает твой внешний айпи (не локальный)... Если конечно ты к прокси не подключен
0
30 / 30 / 3
Регистрация: 25.05.2011
Сообщений: 308
31.07.2011, 03:09  [ТС] 18
При заходе на этот сайт он мне показывает мой айпи, но это не мой айпи.
Он показывает твой внешний айпи (не локальный)... Если конечно ты к прокси не подключен
0
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
31.07.2011, 03:12 19
не получается с этим айпи, ошибка "этот хост не известен". Внешний айпи роутера получается? или сетевой карты
0
30 / 30 / 3
Регистрация: 25.05.2011
Сообщений: 308
31.07.2011, 03:13  [ТС] 20
Сайты сканит айпи получает порты сканирует... А вот сам себя не фига не хочет... Уже как только не пробовал
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.07.2011, 03:13

Проверка на загруженный файл или нет
if (!File.Exists(richTextBox1.Text)) { ...

Проверка конец файла или нет
Подскажите пожалуйста если читаю числа типа int и не знаю когда конец файла как это...

Проверка простое число или нет
Здравствуйте! Подскажите как можно проверить простое число или нет в TASM, хотя бы алгоритм...

Проверка интернета. Работает или нет?
Подскажите как это реализовать? Нужно по нажатию кнопки, чтоб мне выдало работает ли мой...

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

Проверка запущено приложение или нет?
Подскажите пожалуйста. Как определить, что данное приложение уже запущено?


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

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

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