Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.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
Цитата Gonarh @
Никто не зависает, читай про блокирующие/неблокируюжие режимы работы сокетов

Считаете что сокет блокирует выполнение программы из за отсутствия данных.Я вас правильно понял?Тогда как объяснить что в это время сниффер 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 трафик своего компьютера.

:no: Без промиск режима получить трафик непредназначенный твоему приложению нельзя.

Цитата izumov @
Я неверно трактую возможности сырого сокета?

:yes:

Добавлено
Сырой сокет даёт возможность написать свой протокол поверх ip, читать и принимать соответствующие пакеты, не более.

Добавлено
В линухах можно вообще собирать целиком фрейм л2

Добавлено
Вобщей читай как работает сетевой стек

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