Как получить список открытых сокетов
Есть ли способ получить список всех открытых сокетов (адрес сокета или дескриптор сокета ) в 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
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
Читайте также: