Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
79 / 72 / 4
Регистрация: 05.01.2016
Сообщений: 288

Определить по порту имя программы

12.08.2016, 13:14. Показов 1943. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добра.
Как мне определить программу по порту на своем ПК?
Вожу в TextBox1 порт (заранее уже известно что он открыт) жму кнопку и происходит вывод имени программы которая использует этот порт в TextBox2.

Что то на подобии консольной команды netstat

Например проверяю порт открыт/закрыт так:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        BackgroundWorker1.RunWorkerAsync()
    End Sub
    Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
        Dim ip As New TcpClient()
        Try
            ip.Connect("127.0.0.1", "тут порт")
        Catch ex As Exception
            MsgBox("Порт закрыт")
        End Try
        If ip.Connected Then
            MsgBox("Порт открыт")
        End If
        ip.Close()
    End Sub
Поиск не дал результата.
Заранее спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.08.2016, 13:14
Ответы с готовыми решениями:

Определить имя устройства на com порту
Доброго времени суток! есть считывающее устройство, поставил на него драйвера для создания виртуального com порта в диспетчере устройств...

Как получить имя подключенного к порту устройства?
Ребят, как получить имя подключенного к порту устройства? К примеру "Cino FuzzyScan USB Virtual COM Port", все перерыл и нифига не...

Определить имя исполняемого файла программы
Как программе узнать ЕЁ имя файла? Тоесть если имя файла prog.exe то ЭТОТ самый файл возвращает 'prog.exe' Если переименую в myna.exe...

17
Лень — мое второе и
 Аватар для Orlangur
3226 / 2414 / 687
Регистрация: 28.11.2014
Сообщений: 3,600
Записей в блоге: 3
12.08.2016, 15:46
Лучший ответ Сообщение было отмечено 17Vasya17 как решение

Решение

так попробуй netstat и использовать
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
Imports System.Text.RegularExpressions
 
Public Class Form1
    Public Function Dos_Win(ByVal DosStr As String) As String
        Dim bytes_in() As Byte
        Dim bytes_out() As Byte
 
        bytes_in = System.Text.Encoding.GetEncoding(1251).GetBytes(DosStr)
        bytes_out = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding(866), System.Text.Encoding.GetEncoding(1251), bytes_in)
        Dos_Win = System.Text.Encoding.GetEncoding(1251).GetString(bytes_out)
 
    End Function
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ListBox1.Items.Clear()
        Dim connect As System.Diagnostics.Process
        connect = New System.Diagnostics.Process()
        Dim arg As String = "netstat -a -n -o -p TCP" 'команда для получения списка
        connect.StartInfo.FileName = "C:\Windows\System32\cmd.exe"
 
        connect.StartInfo.Arguments = "/k " & arg
        connect.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
        connect.StartInfo.UseShellExecute = False
        connect.StartInfo.RedirectStandardOutput = True
        connect.StartInfo.CreateNoWindow = True
        connect.Start() 'запускаем
        Dim result As String = connect.StandardOutput.ReadToEnd ' перенаправляем вывод
        connect.WaitForExit()
 
        Dim res() As String = Split(Dos_Win(result), vbCrLf) ' полученную строку пилим по строкам и  заполняем listbox
        For i = 0 To res.Count - 1
            ListBox1.Items.Add(res(i))
        Next
        Dim res_string As String = ""
        For i = 0 To ListBox1.Items.Count - 1
            ListBox1.SelectedIndex = i
            Dim sel As String = ListBox1.SelectedItem
            If sel.Contains(":" & TextBox1.Text & " ") Then 'если выбранный элемент содержит введенный порт
                res_string = ListBox1.SelectedItem
                Dim nums() As String = (From M As Match In Regex.Matches(res_string, "\d+") Select M.Groups(0).Value).ToArray() ' заполняем массив nums всеми найденными числами
                TextBox2.Text = nums(nums.Count - 1) 'пишем в textbox2 последнее найденное число в строке это будет pid обьекта
                Dim localById As Process = Process.GetProcessById(TextBox2.Text)
                TextBox3.Text = localById.ProcessName ' пишем в textbox3 имя процесса, найденного по pid
            End If
        Next
    End Sub
 
End Class
черновой вариант, на форме listbox, textbox1 / textbox2 / textbox3 / button
единственная проблема - будут браться все процессы на выбранном порте, так что лучше заносить их в еще один listbox
2
79 / 72 / 4
Регистрация: 05.01.2016
Сообщений: 288
12.08.2016, 16:30  [ТС]
Цитата Сообщение от Orlangur1991 Посмотреть сообщение
Dim nums() As String = (From M As Match In Regex.Matches(res_string, "\d+")
Ошибка у меня. То есть в Regex
0
Лень — мое второе и
 Аватар для Orlangur
3226 / 2414 / 687
Регистрация: 28.11.2014
Сообщений: 3,600
Записей в блоге: 3
12.08.2016, 16:54
17Vasya17, Imports System.Text.RegularExpressions не пропустил в начале?
0
79 / 72 / 4
Регистрация: 05.01.2016
Сообщений: 288
12.08.2016, 19:40  [ТС]
Orlangur1991 Добавил подчёркивает зелёным.

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
Imports System.Net.Sockets
Imports System.Text.RegularExpression
Public Class Form1
    Public Function Dos_Win(ByVal DosStr As String) As String
        Dim bytes_in() As Byte
        Dim bytes_out() As Byte
 
        bytes_in = System.Text.Encoding.GetEncoding(1251).GetBytes(DosStr)
        bytes_out = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding(866), System.Text.Encoding.GetEncoding(1251), bytes_in)
        Dos_Win = System.Text.Encoding.GetEncoding(1251).GetString(bytes_out)
 
    End Function
 
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        ListBox1.Items.Clear()
        Dim connect As System.Diagnostics.Process
        connect = New System.Diagnostics.Process()
        Dim arg As String = "netstat -a -n -o -p TCP"
        connect.StartInfo.FileName = "C:\Windows\System32\cmd.exe"
 
        connect.StartInfo.Arguments = "/k " & arg
        connect.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
        connect.StartInfo.UseShellExecute = False
        connect.StartInfo.RedirectStandardOutput = True
        connect.StartInfo.CreateNoWindow = True
        connect.Start()
        Dim result As String = connect.StandardOutput.ReadToEnd
        connect.WaitForExit()
 
        Dim res() As String = Split(Dos_Win(result), vbCrLf)
        For i = 0 To res.Count - 1
            ListBox1.Items.Add(res(i))
        Next
        Dim res_string As String = ""
        For i = 0 To ListBox1.Items.Count - 1
            ListBox1.SelectedIndex = i
            Dim sel As String = ListBox1.SelectedItem
            If sel.Contains(":" & TextBox3.Text & " ")
                res_string = ListBox1.SelectedItem
                Dim nums() As String = (From M As Match In Regex.Matches(res_string, "\d+") Select M.Groups(0).Value).ToArray()
                TextBox4.Text = nums(nums.Count - 1)
                Dim localById As Process = Process.GetProcessById(TextBox4.Text)
                TextBox5.Text = localById.ProcessName
            End If
        Next
    End Sub
0
 Аватар для XIST
1960 / 1061 / 148
Регистрация: 01.10.2009
Сообщений: 3,588
Записей в блоге: 1
12.08.2016, 22:14
Цитата Сообщение от 17Vasya17 Посмотреть сообщение
Добавил подчёркивает зелёным
и черт с ним, запустите приложение
0
79 / 72 / 4
Регистрация: 05.01.2016
Сообщений: 288
13.08.2016, 04:34  [ТС]
Цитата Сообщение от XIST Посмотреть сообщение
и черт с ним, запустите приложение
Пытаюсь не как



Ошибка 2 "Regex" не объявлен. Может быть недоступен из-за своего уровня защиты.
0
100 / 95 / 23
Регистрация: 30.08.2015
Сообщений: 457
13.08.2016, 06:11
17Vasya17, у вас ошибка
VB.NET
1
Imports System.Text.RegularExpression
- не хватает s в конце
VB.NET
1
Imports System.Text.RegularExpressions
0
79 / 72 / 4
Регистрация: 05.01.2016
Сообщений: 288
13.08.2016, 14:50  [ТС]
densy Спасибо за внимательность.

Orlangur1991 Спасибо за код. Но у меня программа висит и cmd в диспетчере задач.
Ничего не происходит
0
Лень — мое второе и
 Аватар для Orlangur
3226 / 2414 / 687
Регистрация: 28.11.2014
Сообщений: 3,600
Записей в блоге: 3
13.08.2016, 16:47
17Vasya17, пришли скриншот, у меня все работает, пробовал на 3 машинах.

0
79 / 72 / 4
Регистрация: 05.01.2016
Сообщений: 288
13.08.2016, 17:20  [ТС]


И проект:
PortScannerV3.rar
Я всё перепробовал и даже тупо просто текст от сюда скопировал.
Когда закрываю проект (exe) т cmd висит в диспетчере задач
Ждал ответа проги около 15 мин и не чего
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4356 / 3426 / 512
Регистрация: 27.01.2014
Сообщений: 6,257
13.08.2016, 17:26
скорее всего cmd сам не закрылся по причине ошибки в запросе, пожет быть строка с аргкментами скопировалась с ошибками и потерялись некоторые "слэши"..?
0
Лень — мое второе и
 Аватар для Orlangur
3226 / 2414 / 687
Регистрация: 28.11.2014
Сообщений: 3,600
Записей в блоге: 3
13.08.2016, 17:37
Все, отловил баг, по какой то причнине на windows 8 cmd ожидает закрытия, хз почему, на дргих системах сам вырубается, попробуй поменять строку
VB.NET
1
 connect.StartInfo.Arguments = "/k " & arg
на
VB.NET
1
 connect.StartInfo.Arguments = "/C " & arg
1
79 / 72 / 4
Регистрация: 05.01.2016
Сообщений: 288
13.08.2016, 17:44  [ТС]
Orlangur1991
Притом что самое интересное в win 8 cmd команду netstat -a приходиться писать так NETSTAT -a

Добавлено через 1 минуту
Цитата Сообщение от Orlangur1991 Посмотреть сообщение
connect.StartInfo.Arguments = "/C " & arg
Заработало
0
Лень — мое второе и
 Аватар для Orlangur
3226 / 2414 / 687
Регистрация: 28.11.2014
Сообщений: 3,600
Записей в блоге: 3
13.08.2016, 17:45
Собственно в описании cmd сказано
/C Выполнение указанной команды (строки) с последующим завершением.
/K Выполнение указанной команды (строки) без последующего завершения.
Но тогда почему на системах типа windows 7 / server 2008 / xp само все закрывалось?

Добавлено через 1 минуту
17Vasya17, не, у меня на домашней машине win 8 и netstat хавается маленькими буквами
0
79 / 72 / 4
Регистрация: 05.01.2016
Сообщений: 288
13.08.2016, 17:47  [ТС]
То есть я так понимаю на win 7 не сработает?
0
Лень — мое второе и
 Аватар для Orlangur
3226 / 2414 / 687
Регистрация: 28.11.2014
Сообщений: 3,600
Записей в блоге: 3
13.08.2016, 17:51
17Vasya17, наоборот, на win 7 работает и с ключом /k и с ключом /c

Добавлено через 2 минуты
17Vasya17, Собственно отсюда и косяк Код скопировал с другого своего проекта, а там был ключ /k, я не обратил внимания из-за того, что cmd успешно отрабатывала и закрывалась, хотя не должна была
0
79 / 72 / 4
Регистрация: 05.01.2016
Сообщений: 288
13.08.2016, 17:53  [ТС]
Спасибо тогда за код и ответы. Буду после выходных разбираться с кодом
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.08.2016, 17:53
Помогаю со студенческими работами здесь

Как, зная Handle окна программы, определить имя EXE
Добрый вечер, вот такая проблема: нужно найти имя активного окна. Handle узнаётся с помощью GetForegroundWindow(), а как действовать...

Как определить имя сервер может определить имя
Раньше было все нормально когда IP адреса были статичными, но наш администратор сделал их динамичными и теперь мой вебсервер не может...

как вывести имя программы? именно имя, то что видно в провонике example.exe
собственно вопрос ^. это возможно? Добавлено через 18 минут догадался, кому надо ^^ #include <iostream.h> using...

Как запустить 2 программы на одном порту?
Вобщем такая ситуация, написал чат (наполовину), т.к. он прослушивает определенный порт, как заставить на одной машине работать вторую...

Как узнать имя процесса, зная имя программы?
Здравствуйте, подскажите пожалуйста, как узнать имя процесса выполняемой программы, зная имя этой программы в c#? P.S. Если это...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru