|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.11.2016, 15:55 | #1 |
Заблокирован
Регистрация: 11.11.2016
Сообщений: 261
|
Не получается забиндить сокет
Мне нужно написать простой анализатор пакетов, который снифает трафик, слегка анализирует пакеты и решает, отбрасывать пакет или нет. Написал такую программу:
Код:
Я так понимаю, проблема в размере структур, которые я использую в вызове bind? Как решить проблему? |
27.11.2016, 16:14 | #2 |
Заблокирован
Регистрация: 11.11.2016
Сообщений: 261
|
Проблему с биндом решил. Не хватало закрывающей скобки.
Остались две задачи: 1. Добраться до данных в пакете и анализировать их 2. Переделать под IPv6 Чтобы получить данные, надо просто перейти по указателю, а размер этих данных равен IPHeader.length - sizeof(tagIPHeader)? Или нет? |
27.11.2016, 16:14 | #3 | ||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Цитата:
Цитата:
Код:
|
||
27.11.2016, 16:30 | #4 |
Заблокирован
Регистрация: 11.11.2016
Сообщений: 261
|
Это решил.
Дописал такую процедуру: Код:
Еще хочу понять, какова структура данных, которые лежат в буфере после вызова recv. Там сырые данные, то есть IP-заголовок и прочая ботва, или что-то другое? |
27.11.2016, 16:46 | #5 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
А что, это работает?! В документации прямым текстом написано, что нельзя передавать IPPROTO_IP...
Ref: https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx |
27.11.2016, 17:01 | #6 | |
Заблокирован
Регистрация: 11.11.2016
Сообщений: 261
|
Цитата:
Остается вопрос, как добраться до данных. |
|
27.11.2016, 17:04 | #7 |
Заблокирован
Регистрация: 11.11.2016
Сообщений: 261
|
У меня в строке printf("data = %s\n", *hdr->data); или printf("data = %s\n", hdr->data); обращение к неверной памяти.
|
29.11.2016, 12:18 | #8 |
Пользователь
Регистрация: 17.02.2013
Сообщений: 26
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Что то не дает забиндить порты | Abuhamed | Windows | 2 | 03.10.2013 00:14 |
Забиндить ImageBrush ImageSource | coNsept | Общие вопросы .NET | 1 | 28.11.2012 05:00 |
Сокет останавливает другой сокет. | batand | C/C++ Сетевое программирование | 2 | 09.10.2012 11:58 |
Вопрос по WinSock: "сокет=сокет." | Ksardas13 | C/C++ Сетевое программирование | 2 | 27.11.2011 16:12 |
Как забиндить все ПОРТЫ? | KaneKRY | Работа с сетью в Delphi | 0 | 02.04.2010 14:45 |