Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как получить список занятых/свободных портов? 
V
    Опции темы
boostcoder
Дата 17.8.2010, 20:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 3
Всего: 110



есть ли какая-то тулза для сабжа?
PM WWW   Вверх
boostcoder
Дата 17.8.2010, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 3
Всего: 110



в обшем на коленке написал:
Код

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

void usage(const char* p) {
    const char* name = strrchr(p, '/');
    if ( !name ) {
        name = "portstat";
    } else {
        ++name;
    }
    printf( "usage:\n"
              "%s <port - get status of port>\n"
              "<u - print only used ports>\n"
              "<f - print only free ports>\n",
              name
    );
}

int main(int argc, char** argv) {
    struct sockaddr_in sockaddr;
    int idx = 0, sock, oneport = 0, onlyfree = 1, onlyused = 1;
    
    if ( argc == 2 ) {
        if ( argv[1][0] == 'f' ) {
            onlyused = 0;
        } else if ( argv[1][0] == 'u' ) {
            onlyfree = 0;
        } else if ( isdigit(argv[1][0]) ) {
            idx = atoi(argv[1]);
            oneport = 1;
        } else {
            printf("error in command line!\n\n");
            usage(argv[0]);
            return 0;
        }
    } else {
        idx = 0;
    }
    
    memset(&sockaddr, 0, sizeof(struct sockaddr_in));
    sockaddr.sin_family = PF_INET;
    sockaddr.sin_addr.s_addr = INADDR_ANY;

    for ( ; idx < USHRT_MAX; ++idx) {
        sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
        if ( sock < 0 ) {
            perror("can`t create main socket!");
            return 1;
        }
        sockaddr.sin_port = htons(idx);
        if ( bind(sock, (const void*)&sockaddr, sizeof(struct sockaddr_in)) == -1 ) {
            if ( onlyused ) printf("%5d%s\n", idx, (onlyused && onlyfree)?" used":"");
        } else {
            if ( onlyfree ) printf("%5d%s\n", idx, (onlyused && onlyfree)?" free":"");
        }
        close(sock);
        if ( oneport ) {
            break;
        }
    }
    
    return 0;
}


хз тут ему место, или где..


Это сообщение отредактировал(а) boostcoder - 17.8.2010, 23:35
PM WWW   Вверх
ZeeLax
Дата 18.8.2010, 05:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 4388
Регистрация: 20.8.2006
Где: Алма-Ата

Репутация: 26
Всего: 88



netstat в догонку


--------------------
Utility is when you have one telephone, luxury is when you have two, opulence is when you have three — and paradise is when you have none.
— Doug Larson
PM MAIL WWW ICQ Skype Jabber   Вверх
spin2
Дата 18.8.2010, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 15.12.2005
Где: Москва-Одесса

Репутация: 5
Всего: 31



boostcoder, lsof -i


--------------------
"С кем тяжело молчать, с тем не о чем говорить" (Метерлинк)
блог
Все об ICQ-ботах
PM MAIL WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0582 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.