Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > C/C++: Сетевое программирование > Почему отладчик виснет при вызове функции recv(mysocket,Buffer,sizeof(Buffer),0) |
Автор: izumov 12.02.23, 08:27 |
У меня windows 8.1 отладка идет в Visual Studio дескриптор сокета получен при инициализации сокета с параметрами AF_INET, SOCK_RAW,IPPROTO_IP,0,"127.0.0.1" Доступ к интернет идет через wifi.отладчик при прохождении строки int recvdata = recv(mysocket,Buffer,sizeof(Buffer),0); зависает а функция вообще не возвращает никакого значения в это время на компьютере работает программа Глаз.ТВ и идет видеопоток.В чем может быть проблема подскажите. |
Автор: Gonarh 12.02.23, 09:51 |
Никто не зависает, читай про блокирующие/неблокируюжие режимы работы сокетов |
Автор: izumov 12.02.23, 10:25 |
Считаете что сокет блокирует выполнение программы из за отсутствия данных.Я вас правильно понял?Тогда как объяснить что в это время сниффер Wireshark фиксирует массу пакетов а мой сокет не получает их. |
Автор: Gonarh 12.02.23, 10:38 |
Цитата izumov @ Тогда как объяснить что в это время сниффер Wireshark фиксирует массу пакетов а мой сокет не получает их. Я тебе это объяснил в соседней теме, ты ничего не получишь в свой сокет, кроме того ip-трафика который непосредственно отправлен на прибинденный айпи. Ежели хочешь видеть весь трафик прилетаемый на сетевой интерфейс - пили свой драйвер/используй npcap |
Автор: izumov 12.02.23, 10:59 |
Цитата Gonarh @ Цитата Gonarh @ Я тебе это объяснил в соседней теме, ты ничего не получишь в свой сокет, кроме того ip-трафика который непосредственно отправлен на прибинденный айпи. Ежели хочешь видеть весь трафик прилетаемый на сетевой интерфейс - пили свой драйвер/используй npcap Насколько я понимаю при связывании сырого сокета с адресом петли обратной связи я должен получать весь IP трафик своего компьютера.Я неверно трактую возможности сырого сокета? |
Автор: Gonarh 12.02.23, 18:37 |
Цитата izumov @ Насколько я понимаю при связывании сырого сокета с адресом петли обратной связи я должен получать весь IP трафик своего компьютера. Без промиск режима получить трафик непредназначенный твоему приложению нельзя. Добавлено Сырой сокет даёт возможность написать свой протокол поверх ip, читать и принимать соответствующие пакеты, не более. Добавлено В линухах можно вообще собирать целиком фрейм л2 Добавлено Вобщей читай как работает сетевой стек |