Как получить список открытых сокетов

Обновлено: 05.07.2024

Есть ли способ получить список всех открытых сокетов (адрес сокета или дескриптор сокета ) в Linux, используя C в пользовательском пространстве или kernel?

4 ответа

Я пытаюсь передать изображение с помощью TCP сокетов с помощью linux. Я много раз использовал этот код для передачи небольших сумм, но как только я попытался передать изображение, оно передало только первую треть. Возможно ли, что существует максимальный размер буфера для tcp сокетов в linux? Если.

В linux я могу получить список открытых сегментов общей памяти posix, получив список каталогов /dev/shm. Как программно получить список всех открытых сегментов общей памяти posix в FreeBSD? Предполагая, что сегменты открываются с помощью shm_open, и я не знаю даже части имени, которое.

Откройте и прочтите следующее:

/proc/net/tcp -список открытых сокетов TCP

/proc/net/udp -список открытых сокетов UDP

/proc/net/raw -список всех сокетов "raw"

Это как файлы "regular", которые вы открываете и читаете с помощью filehandle и дадите вам всю необходимую информацию о каждом сокете.

Эта программа может быть полезна для вас и демонстрирует, как разбирать файлы /net/proc/* sockstat.c

В каталоге /proc/self/fd есть поддельные символические ссылки, дающие вам все ваши открытые файловые дескрипторы - сокеты дают что-то вроде:

Повторите их с помощью opendir, readdir(), а затем опросите их с помощью readlink()

Если вы знаете, что FD 4-это сокет,вы можете затем вызвать getsockname() на нем, чтобы получить локальное семейство адресов, адрес и т. д.

Я хотел бы получить список открытых файлов в процессе на os x (10.9.1). В Linux году мне удалось получить это от /proc/PID/fd . Однако я не уверен, как получить то же самое на OS X. Я обнаружил, что procfs отсутствует в OS X (по умолчанию. возможные реализации присутствуют, но я не хочу идти этим.

В рамках установки NuGet нам нужно открыть веб-страницу, когда установка завершится. Наше требование состоит в том, чтобы: Откройте веб-страницу в Visual Studio в новом окне, если страница еще не открыта в другом окне. Открытие веб-страницы само по себе прямолинейно: .

Исходные данные можно найти в /proc/net/tcp, /proc/net/udp и т. д. Обратитесь к заголовку в первой строке для краткого описания.

Похожие вопросы:

Я интересуюсь программированием сокетов и изучил основы программирования сокетов. Я делаю это C на linux. Теперь я хотел бы поработать над каким-нибудь проектом, связанным с программированием.

В Linux, как я могу получить список файлов, открытых в данный момент в программе X? (В частности, я работаю на Fedora, а программа-Zend Studio, но я предполагаю, что есть общий ответ.)

Я пытаюсь передать изображение с помощью TCP сокетов с помощью linux. Я много раз использовал этот код для передачи небольших сумм, но как только я попытался передать изображение, оно передало.

В linux я могу получить список открытых сегментов общей памяти posix, получив список каталогов /dev/shm. Как программно получить список всех открытых сегментов общей памяти posix в FreeBSD.

Я хотел бы получить список открытых файлов в процессе на os x (10.9.1). В Linux году мне удалось получить это от /proc/PID/fd . Однако я не уверен, как получить то же самое на OS X. Я обнаружил, что.

В рамках установки NuGet нам нужно открыть веб-страницу, когда установка завершится. Наше требование состоит в том, чтобы: Откройте веб-страницу в Visual Studio в новом окне, если страница еще не.

Как можно получить сокет ID (дескриптор) созданных сокетов программы? Я знаю, что могу получить все открытые сокеты во всех программах по GetTcpTable() , но у него есть две проблемы: Он показывает.

Команда ss — это инструмент, который используется для отображения информации о сетевых сокетах в системе Linux. Инструмент отображает более подробную информацию, чем команда netstat, которая используется для отображения активных соединений сокетов.

В этом руководстве мы подробно рассмотрим, как можно использовать команду ss для отображения различной информации о сетевых подключения (сокетах) в Linux.

1. Перечисление всех соединений

Базовая команда ss без каких-либо опций просто выводит список всех соединений независимо от состояния, в котором они находятся.

Если ни одна из опций не используется, ss отображает список открытых не слушающих сокетов (например, TCP/UNIX/UDP), которые установили соединение.


2. Список слушающих и не слушающих портов

Вы можете получить список как слушающих, так и не слушающих портов, используя опцию -a, как показано ниже.

3. Список прослушивающих сокетов

Чтобы отобразить только сокеты прослушивания, используйте флаг -l:

4. Список всех TCP соединений

Чтобы отобразить все соединения TCP, используйте параметр -t:


5. Список всех слушающих TCP соединения

Для просмотра всех слушающих TCP-сокетов используйте комбинацию -lt:

6. Список всех UDP соединений

Для просмотра всех сокетов с UDP соединениями используйте параметр -ua:

7. Список всех слушающих UDP соединений

Для просмотра списка подключений UDP используйте параметр -lu.

8. Отображение у сокетов PID (идентификаторов процессов)

Для отображения идентификаторов процессов, связанных с соединениями сокетов, используйте флаг -p:

9. Показать сводную статистику

Чтобы вывести сводную статистику, используйте опцию -s.


10. Показать сокеты IPv4 и IPv6

Если вам интересны соединения через сокет IPv4, используйте опцию -4.

Чтобы отобразить соединения IPv6, используйте параметр -6.

11. Фильтр соединений по номеру порта

Команда ss также позволяет фильтровать номер порта сокета или номер адреса. Например, для отображения всех соединений сокетов с портом назначения или исходным портом ssh выполните команду.


12. Вывод номеров портов в числовом формате, а не имени в ss

По умолчанию команда ss показывает имена портов, чтобы выводились порты в виде чисел, используйте опцию -n:

13. Поиск открытых портов на Linux

Следующая команда покажет все прослушиваемые порты для TCP и UDP соединений в виде цифровых значений:

14. Поиск программ, которые прослушивают порты на Linux

Если добавить ключ -p, то программа дополнительно покажет процессы, использующие сокет:

Я пытаюсь получить список всех сокетов / клиентов, которые в данный момент подключены.

io.sockets не возвращает массив, к сожалению.

Я знаю, что могу сохранить свой собственный список, используя массив, но не думаю, что это оптимальное решение по двум причинам:

Избыточность. Socket.IO уже хранит копию этого списка.

Socket.IO предоставляет метод для установки произвольных значений полей для клиентов (то есть:), socket.set('nickname', 'superman') поэтому я должен был бы не отставать от этих изменений, если бы я должен был поддерживать свой собственный список.

Разве вы не можете просто конвертировать io.sockets в массив? В 0.7.6 io.sockets.sockets представляет собой простой хеш-объект socket Первый аргумент - err и если вы используете хранилище памяти, это всегда null . .get('nickname', function(err, nickname) < . >)

В Socket.IO 0.7 у вас есть clients метод для пространств имен, который возвращает массив всех подключенных сокетов.

API для пространства имен:

Для пространства имен

Надеется, что это поможет кому-то в будущем

ПРИМЕЧАНИЕ: это решение работает ТОЛЬКО с версией до 1.0

ОБНОВЛЕНО 2020 Мар 06

От 1.x и выше, пожалуйста, перейдите по этой ссылке: узнать, сколько человек в чате в socket.io

Я думаю, что они отказались от метода клиентов в 1.0 . просто проверяя это в данный момент . Они выпали почти все в 1.0, так как это полностью переписано. Но так как 1.0 не выпускался годами. В 1.0 вы должны использовать connected объект пространства имен. @ 3rdEden, каков синтаксис для использования подключенного объекта пространства имен? var clients = io.sockets.connected(); очевидно не работает. Спасибо

Socket.io 1.4

Object.keys(io.sockets.sockets); дает вам все подключенные розетки.

Socket.io 1.0 Начиная с socket.io 1.0, фактически принятый ответ больше не действителен. Поэтому я сделал небольшую функцию, которую я использую как временное исправление:

Api для Нет имен становится

Api для пространства имен становится:

Также смотрите этот связанный вопрос , в котором я даю функцию, которая возвращает сокеты для данной комнаты.

20 команд netstat для управления сетью Linux и Windows

20 команд netstat для управления сетью Linux и Windows

Netstat (сетевая статистика) — инструмент командной строки для мониторинга как входящих, так и исходящих сетевых подключений, а также просмотра таблиц маршрутизации, статистики интерфейса и т.д. Netstat доступен во всех Unix-подобных операционных системах, а также доступен в ОС Windows. Это очень полезно с точки зрения устранения неполадок в сети и измерения производительности. Netstat — один из самых базовых инструментов отладки сетевых сервисов, рассказывающий о том, какие порты открыты и какие программы их используют.

1. Перечисление всех портов для соединений TCP и UDP

Список всех портов (как TCP, так и UDP) с использованием опции netstat -a.

2. Перечисление соединений TCP-портов

Список соединений TCP (Transmission Control Protocol) с использованием опции netstat -at.

3. Список соединений портов UDP

Список соединений UDP (User Datagram Protocol) с использованием опции netstat -au.

4. Список всех открытых входящих портов

Список всех открытых входящих портов с использованием опции netstat -l.

5. Список всех активных входящих портов TCP

Список всех активных TCP-портов прослушивания с использованием опции netstat -lt.

6. Список всех активных входящих портов UDP

Список всех активных входящих портов UDP с использованием опции netstat -lu.

7. Список всех активных входящих сокетов UNIX

Список всех активных входящих сокетов UNIX с помощью опции netstat -lx.

8. Отображение статистики по всем протоколам

По умолчанию для протоколов TCP, UDP, ICMP и IP показаны статистические данные. Параметр -s может использоваться для указания набора протоколов.

9. Отображение статистики по протоколу TCP

Отображение статистики TCP-протокола с использованием опции netstat -st.

10. Отображение статистики по протоколу UDP

Отображение статистики UDP-протокола с использованием опции netstat -su.

11. Отображение имени службы с PID

Ниже приведен пример отображения имени службы с её номером PID. Для этого необходимо использовать опцию netstat -tp, которая отобразит «PID / Program Name».

12. Отображение режима Promiscuous

Promiscuous mode или promisc mode — так называемый «неразборчивый» режим, в котором сетевая плата позволяет принимать все пакеты независимо от того, кому они адресованы.

Отображая режим Promiscuous с переключателем -ac, netstat выводит выбранную информацию на экран и обновляет её каждые пять секунд. По умолчанию экран обновляется каждую секунду.

1 3. Отображение маршрутизации IP-адреса ядра

Отображение таблицы IP-маршрутизации ядра с помощью команды netstat -r.

1 4. Отображение транзакций сетевого интерфейса

Отображение транзакций пакетов сетевого интерфейса, включая как отправляемые, так и принимаемые пакеты с размером MTU netstat -i.

1 5. Отображение таблицы интерфейса ядра

Команда отображает таблицу интерфейса ядра, аналогично команде ifconfig.

1 6. Отображение информации IPv4 и IPv6

Отображает информацию о членстве в многоадресной группе для IPv4 и IPv6 netstat -g.

1 7. Циклический вывод информации Netstat

Чтобы получать информацию netstat каждые несколько секунд, используйте команду приведенную ниже. Она будет непрерывно выводить информацию,через каждые несколько секунд netstat -c.

1 8. Поиск не поддерживаемых адресов

1 9. Поиск программ прослушивания

20. Отображение статистики сети RAW

Читайте также: