1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Анализатор трафика

Тема в разделе "С и С++", создана пользователем opium star, 19 апр 2007.

Статус темы:
Закрыта.
  1. opium star

    opium star Гость

    Репутация:
    0
    Здрасте! )

    Вот вопрос на счет трафика... Короче делаю анализатор трафика. Как входящий посчитать все понятно и ясно, но вот как быть с исходящим? Подскажите плиз B)

    зы: была на этом форуме такая темка, но ее грохнули и я не успел туда заглянуть (

    ззы: заранее признателен
     
  2. Kmet

    Kmet Well-Known Member
    Java Team

    Репутация:
    0
    Регистрация:
    25 май 2006
    Сообщения:
    1.036
    Симпатии:
    8
    Как вариант LSP
     
  3. opium star

    opium star Гость

    Репутация:
    0
    Прости, но я не понял :( Можно по подробней? :( Я очень начинающий )))

    И есче 2 вопроса:

    1. че у меня стопорится проект на строке включения сокета в режим прослушивания (ioctlsocket(s, SIO_RCVALL, &flag) ) ???

    2. sa.sin_addr.s_addr = ((struct in_addr *)phe->h_addr_list[0])->s_addr - это строка с примера! Вот зачем все так сложно? Зачем так все запутанно? Я так понял это здесь выбирается ИП адрес хоста, который связывается с прослушивающим сокетом (ИП адрес моей машины). Почему нельзя просто присвоить 0 и принимать пакеты на все ИП? Вот здесь у меня пробел, который хотелось бы заполнить.


    Посмотрите плиз исходник и скажите, хоть в правильном направлении я иду?

    Код:
    void CTraficatorDlg::OnBnClickedStart()
    {
    iSS = 1;
    
    typedef struct IPHeader {
    UCHAR  iph_verlen;  // версия и длина заголовка
    UCHAR  iph_tos;	 // тип сервиса
    USHORT iph_length;  // длина всего пакета
    USHORT iph_id;	  // Идентификация
    USHORT iph_offset;  // флаги и смещения
    UCHAR  iph_ttl;	 // время жизни пакета
    UCHAR  iph_protocol; // протокол
    USHORT iph_xsum;	 // контрольная сумма
    ULONG  iph_src;	 // IP-адрес отправителя
    ULONG  iph_dest;	 // IP-адрес назначения
    } IPHeader;
    
    WSADATA	 wsadata;  
    char		name[128]; 
    HOSTENT*	phe;	  
    SOCKADDR_IN sa;		
    IN_ADDR sa1;		
    unsigned long		flag = 1; // Flag PROMISC On/Off.
    
    unsigned short lowbyte;
    unsigned short hibyte;
    
    char Buffer[0x10000]; //64 Kb
    
    char chInfo[64];
    char *sizePack;
    
    CWnd *pStatic = GetDlgItem(IDC_ERRORS);
    
    if (WSAStartup(0x0202, &wsadata)) 
    {
    MessageBox("WSAStartup error !", NULL, 0);
    WSACleanup();
    }
    else pStatic->SetWindowTextA("Winsock initial OK !");
    
    
    if (gethostname(chInfo,sizeof(chInfo)))
    {
    MessageBox("Not local host", 0, 0);
    exit(1);
    }
    else
    {	
    pStatic->SetWindowTextA(chInfo);
    }
    
    phe = gethostbyname( name );
    
    s = socket(AF_INET, SOCK_RAW, IPPROTO_IP );
    if (s == INVALID_SOCKET) 
    {
    MessageBox("Error create socket", 0, 0);
    exit(1);
    }
    
    sa.sin_family = AF_INET;
    sa.sin_addr.s_addr = ((struct in_addr*)phe->h_addr_list[0])->s_addr;
    
    if (bind(s, (SOCKADDR *)&sa, sizeof(SOCKADDR)))
    {
    MessageBox("Error bind", 0, 0);
    exit(1);
    }
    else pStatic->SetWindowTextA("Bind OK !!!");
    
    // Enable promiscuous mode.
    ioctlsocket(s, SIO_RCVALL, &flag);
    
    pStatic->SetWindowTextA("Promiscuous mode is enable!!!");
    
    while (iSS == 1)
    {
    int count;
    count = recv( s, Buffer, sizeof(Buffer), 0 );
    
    if( count >= sizeof(IPHeader) )
    {
    IPHeader* hdr = (IPHeader *)Buffer;
    
    lowbyte = hdr->iph_length>>8;
    hibyte = hdr->iph_length<<8;
    hibyte = hibyte + lowbyte;
    sizePack = itoa(hibyte,"",10);
    pStatic->SetWindowTextA(sizePack);
    }
    }
    }
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей