Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/56: Рейтинг темы: голосов - 56, средняя оценка - 4.71
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
1

Как проверить порт на занятость?

04.03.2013, 22:24. Показов 11371. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
            IPAddress localAddr = IPAddress.Parse(ip);
            try
            {
                TcpListener server = new TcpListener(localAddr, port1);
                server.Start();
                p1free = true;
                server.Stop();
            }
            catch (Exception x)
            {
                p1free = false;
            }
Но если port1 назначить одним из тех, которые видно в мониторе ресурсов, скайпа или кипа например, то он может оказаться свободным! Как такое может быть(я выбирал только те, что TCP)? вероятность 50/50.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.03.2013, 22:24
Ответы с готовыми решениями:

как проверить порт
Здравствуйте подскажите как сделать проверку порта работает или нет и если нет то посылать запрос...

Socket UDP проверить открыт ли порт
Есть ли возможность сначала проверить открыт ли порт на удаленном сервере, и если открыт, отправить...

Как проверить, что порт проброшен?
Дано: ноутбук, интернет, DIR-300 для настройки. На роутере настраиваю проброс портов. А как...

Как проверить, чем занят конкретный порт?
Есть ли способ проверить в Виндоус, чем занят конкретный порт, например 80 - скайп или апаче?

5
Футболист
532 / 434 / 142
Регистрация: 31.10.2011
Сообщений: 1,010
04.03.2013, 22:35 2
Кликните здесь для просмотра всего текста
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
private void button2_Click(object sender, EventArgs e)
        {
            Scan();
        }
        /*И саму CallBack функцию которая будет вызывать EndConnect() завершающую попытку соединения:*/
        private static void ConnectCallback(IAsyncResult ar)
        {
            try
            {
                Socket SockClient = (Socket)ar.AsyncState;
                SockClient.EndConnect(ar);
                connectDone.Set();
            }
            catch (Exception)
            {
 
            }
        }
        public void Scan()
        {
            int StartPort = Convert.ToInt32(Int32.Parse(textBox2.Text));
            int EndPort = Convert.ToInt32(Int32.Parse(textBox3.Text));
            int i;
 
            progressBar1.Maximum = EndPort - StartPort + 1;
            progressBar1.Value = 0;
            listView1.Items.Clear();
 
 
            IPAddress IpAddr = IPAddress.Parse("127.0.0.1");
            for (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();
                    listView1.Items.Add("Порт " + i.ToString());
                    listView1.Items[i - StartPort].SubItems.Add("закрыт");
                    listView1.Items[i - StartPort].BackColor = Color.Red;
                    progressBar1.Value += 1;
                }
                else
                {
                    MySoc.Close();
                    listView1.Items.Add("Порт " + i.ToString());
                    listView1.Items[i - StartPort].SubItems.Add("открыт");
                    listView1.Items[i - StartPort].BackColor = Color.Green;
                    progressBar1.Value += 1;
                }
            }
 
            progressBar1.Value = 0;
        }

Если в коде на разобрался, я прикрепил проэкт) там 3я вкладка, то что тебе надо
Миниатюры
Как проверить порт на занятость?  
Вложения
Тип файла: rar Головко_ФКН304_tcpStatistiks.rar (69.0 Кб, 170 просмотров)
1
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
04.03.2013, 23:55  [ТС] 3
В код еще не углублялся - запустил твое приложение, нажал скан портов - в любом диапазоне все порты красные.

Добавлено через 42 минуты
Походу все наоборот - красный - свободный, зеленый - занятый.

Добавлено через 20 минут
Нет, что-то оно тоже непонятно работает..
0
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
05.03.2013, 00:01  [ТС] 4
вот так оно:
Миниатюры
Как проверить порт на занятость?  
0
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
05.03.2013, 00:55  [ТС] 5
Теперь понял, что оно работает с точностью до наоборот.. Спасибо за быстрый ответ.

Добавлено через 27 минут
Можно еще через IPGlobalProperties.

Добавлено через 14 минут
Вот так проще:
C#
1
2
3
4
5
6
7
8
9
            IPGlobalProperties igp =  IPGlobalProperties.GetIPGlobalProperties();
            TcpConnectionInformation[] tinfo = igp.GetActiveTcpConnections();
foreach (TcpConnectionInformation tcpi in tinfo)
 {
   if (tcpi.LocalEndPoint.Port==myport)
   {
     порт занят
   }
 }
0
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
06.03.2013, 22:53  [ТС] 6
Так и не нашел 100%-го способа, оба метода не видят некоторые занятые порты или определяют как свободные(
0
06.03.2013, 22:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.03.2013, 22:53
Помогаю со студенческими работами здесь

Как проверить открыт порт или закрыт
Привет! Подскажите как проверить на АРМ открыт порт или закрыт например (110), желательно ч/з cmd?

Как проверить открыт\закрыт порт по внешнему IP
Собственно вопрос в теме... Как сделать проверку порта по моему внешнему IP и вывести в лабл...

Как проверить, открыт или закрыт порт по внешнему IP?
Доброго утрица всем... Собственно вопрос в шапке... Нужно проверить порт(закрыт он или открыт) по...

Выгорел порт LAN, как проверить развязывающий трансформатор?
После грозы выгорел порт LAN. Устройство tp-link wa901nd. При подключении патчкорда лампочка не...


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

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