Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Как быстро узнать количество доступных сокетов


Автор: fray 5.6.2009, 22:29
Как быстро узнать количество доступных сокетов в системе ?
Быстрей чем 
Код

65535 - `netstat -p tcp | wc -l` 

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

Автор: azesmcar 5.6.2009, 23:37
fray

Цитата

/proc/*/fd/*
    File descriptors. 
/proc/net/tcp
    List of TCP sockets. 
/proc/net/udp
    List of UDP sockets. 
/proc/net/raw
    List of raw sockets.

посчитать количество файлов пойдет?

Автор: MAKCim 6.6.2009, 09:43
Цитата(azesmcar @  5.6.2009,  23:37 Найти цитируемый пост)
/proc/net/tcp
    List of TCP sockets. 
/proc/net/udp
    List of UDP sockets. 
/proc/net/raw
    List of raw sockets.

это и делает netstat


Цитата(azesmcar @  5.6.2009,  23:37 Найти цитируемый пост)
/proc/*/fd/*
    File descriptors. 

файл != сокет
разным файлам (с разными целочисленными идентификаторами) может соответствовать один и тот же сокет

Автор: azesmcar 6.6.2009, 09:52
Цитата(MAKCim @  6.6.2009,  09:43 Найти цитируемый пост)
это и делает netstat

Да, но вызывать netstat из своей программы явно медленее чем подсчитать самому. Может ненамного но медленее.


Цитата(MAKCim @  6.6.2009,  09:43 Найти цитируемый пост)

файл != сокет

хмм..и что? я по вашему файл от сокета не отличаю? Просто скопировал из мануала всю информацию по данному вопросу.

Автор: MAKCim 6.6.2009, 10:04
Цитата(azesmcar @  6.6.2009,  09:52 Найти цитируемый пост)
хмм..и что? я по вашему файл от сокета не отличаю?


Цитата(MAKCim @  6.6.2009,  09:43 Найти цитируемый пост)
разным файлам (с разными целочисленными идентификаторами) может соответствовать один и тот же сокет 

под файлом с т. з процесса понимается объект структуры файл, который через обработчики file_operations и поле private реализует файловую семантику для любого объекта, в т. ч сокета

Автор: azesmcar 6.6.2009, 10:14
Цитата(MAKCim @  6.6.2009,  10:04 Найти цитируемый пост)
под файлом с т. з процесса понимается объект структуры файл, который через обработчики file_operations и поле private реализует файловую семантику для любого объекта, в т. ч сокета 

и??? я не понимаю к чему вы клоните? я дал автору вопроса максимальную информацию, если сам не разберется - спросит.

Автор: MAKCim 6.6.2009, 11:04
Цитата(azesmcar @  6.6.2009,  10:14 Найти цитируемый пост)
я не понимаю к чему вы клоните?

короче, подсчет

Цитата(azesmcar @  5.6.2009,  23:37 Найти цитируемый пост)
/proc/*/fd/*
    File descriptors. 

не всегда даст нужную информацию

Автор: azesmcar 6.6.2009, 11:21
Цитата(MAKCim @  6.6.2009,  11:04 Найти цитируемый пост)

короче, подсчет

Цитата(azesmcar @  5.6.2009,  23:37 Найти цитируемый пост)
/proc/*/fd/*
    File descriptors. 

не всегда даст нужную информацию 

Вы где-то заметили чтобы я говорил что это даст нужный разультат?
/proc/net/udp тоже не даст нужный результат, автора только TCP интересует.
Если вы к тому что это лишняя информация - я так не считаю.

Автор: MAKCim 6.6.2009, 11:49
azesmcar, 
блин,
с помощью /proc/net всегда можно получить нужный результат
с /proc/*/fd/* не всегда

вопросы?

Автор: azesmcar 6.6.2009, 12:08
Цитата(MAKCim @  6.6.2009,  11:49 Найти цитируемый пост)
azesmcar, 
блин,
с помощью /proc/net всегда можно получить нужный результат
с /proc/*/fd/* не всегда

вопросы? 

блин,
я не говорил что с с помощью /proc/*/fd/* всегда можно получить нужный результат.
я протицировал manual. Ссылка нужна?

Автор: MAKCim 6.6.2009, 12:45
Цитата(azesmcar @  6.6.2009,  12:08 Найти цитируемый пост)
я не говорил что с с помощью /proc/*/fd/* всегда можно получить нужный результат.

зачем просто цитировать manual, если не подразумевается, что это не ответ на вопрос?

Автор: azesmcar 6.6.2009, 12:50
Цитата(MAKCim @  6.6.2009,  12:45 Найти цитируемый пост)
зачем просто цитировать manual, если не подразумевается, что это не ответ на вопрос? 

Потому что в цитате содержался ответ на вопрос. Эта был один пункт и я не хотел удалять из него что либо полагая что автор сам найдет в ней то что ему нужно.

Автор: MAKCim 6.6.2009, 13:43
azesmcar, 
Цитата(azesmcar @  5.6.2009,  23:37 Найти цитируемый пост)
посчитать количество файлов пойдет? 

не подразумевалось ли здесь, что /proc/*/fd/* ответ на вопрос? ;)
(т. к /proc/net не имеет никакого отношения к подсчету файлов)

Автор: azesmcar 6.6.2009, 14:00
Цитата(MAKCim @  6.6.2009,  13:43 Найти цитируемый пост)
не подразумевалось ли здесь, что /proc/*/fd/* ответ на вопрос? ;)

нет.

Цитата(MAKCim @  6.6.2009,  13:43 Найти цитируемый пост)
(т. к /proc/net не имеет никакого отношения к подсчету файлов) 


Цитата

/proc/net
    various net pseudo-files, all of which give the status of some part of the networking layer. These files contain ASCII structures and are, therefore, readable with cat. However, the standard netstat(8) suite provides much cleaner access to these files. 

http://linux.die.net/man/5/proc
я только не помню там для каждого сокета отдельный псевдо-файл или все в одном файле. Если я правильно помню - для каждого дескриптора отдельный псевдо файл, речь шла о подсчете этих файлов. Если в одном - тогда подсчитать количество строк.

Автор: MAKCim 6.6.2009, 15:24
Цитата(azesmcar @  6.6.2009,  14:00 Найти цитируемый пост)
Если я правильно помню - для каждого дескриптора отдельный псевдо файл

нет
отдельные псевдофалы (точнее псвдоссылки) как раз в /proc/*/fd/

ps. проехали ;)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)