На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (4) 1 [2] 3 4  все  ( Перейти к последнему сообщению )  
    > Перехват пакетов локальной сети
      Примерно так:
      ExpandedWrap disabled
            unsigned int  optval;
            DWORD        dwBytesRet;
            ...
            optval = 1;
            if (WSAIoctl(s,
                         SIO_RCVALL,
                         &optval, sizeof(optval),
                         NULL,
                         0,
                         &dwBytesRet,
                         NULL,
                         NULL) == SOCKET_ERROR)
            {
                printf("WSAIotcl(%d) failed; %d\n", dwIoControlCode,
                                                    WSAGetLastError());
                return -1;
            }
        С WSAIoctl то же самое, что и с ioctlsocket. Та же самая ошибка.
          Что говорит WSAGetLastError?
            WSAGetLastError возвращает WSAEINVAL (Invalid argument) при использовании и ioctlsocket и WSAIoctl.
              Стоп!
              А ты как вызываешь WSASocket или socket, с параметром SOCK_RAW?
                Цитата ViGOur @
                SOCK_RAW?


                а как еще использовать сырые сокеты?
                  Да, с SOCK_RAW
                    progr
                    Надо вызывать WSASocket()
                    Кстати, какую .lib вы линкуетте с проектом?
                    И всетаки желателен код - хотя бы основные моменты - вызов сокета, bind и все остальное с этим связанное.
                    Сообщение отредактировано: Oleg2004 -
                      хм...
                      1) у меня (на Win2003) SOCK_RAW и иже с ними работают на ура со стандартными функциями, без всяких WSA*
                      2)
                      Цитата progr @
                      К тому же в той же статье с примером написано, что способ с переводом сетевой карты в promiscuous mode в windows 9x не работает.
                      насколько мне известно, так оно и есть.

                      Цитата Oleg2004 @
                      И всетаки желателен код - хотя бы основные моменты - вызов сокета, bind и все остальное с этим связанное
                      :yes:
                      ioctlsocket(s,SIO_RCVALL,&flag); сработает только если предварительно был успешно вызван bind (токо в качестве IP должен быть не с ноль aka INADDR_ANY)
                        Да все как в статье я делал

                        Добавлено
                        С WSASocket тоже не работает. С проектом линкую ws2_32.lib
                          Вот тебе пример работы с raw сокетами, который работает на 100%...
                          И не будем гадать, что не так! ;)
                          Прикреплённый файлПрикреплённый файлsio_rcvall.rar (6.74 Кбайт, скачиваний: 272)
                            ViGOur
                            //#include <mstcpip.h>??? comment?

                            #include "mstcpip.h"
                            Короче скомпилил и.......... получил ту же 10022!!!
                            И Debug, и Release
                            У меня тоже Win98SE
                            Bind проходит, пишет интерфейс, на который биндится, и привет :o
                            А по каким тогда все-таки именно причине он не хочет пахать на 98-м?
                            Просто сказать - не пашет, и все????
                            Ведь винсок и все хедеры и все либы - в достатке?
                            В чем же идеологическая ошибка :wall:
                            Хочется докопаться до точной причины <_<
                            Сообщение отредактировано: Oleg2004 -
                              О чем-то говорит? :)
                              ExpandedWrap disabled
                                    if (WSAStartup(MAKEWORD(2,2), &wsd) != 0)
                                    {
                                        printf("WSAStartup() failed: %d\n", GetLastError());
                                        return -1;
                                    }
                                ViGOur
                                Ну и что?
                                20 раз писал, и все ОК - Winsock 2.2 на Win98 идет на раз :angry:
                                  Помнится для этого нужно что-то доустонавливать, что не помню, мы как-то по этому поводу с Uncle_Bob'ом говорили... Он даже ссылку давал, на microsoft'овский сайт, где это описывалось, но вот никак найти не могу... :(
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:
                                  Страницы: (4) 1 [2] 3 4  все


                                  Рейтинг@Mail.ru
                                  [ Script execution time: 0,0698 ]   [ 16 queries used ]   [ Generated: 24.04.24, 07:57 GMT ]