|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.03.2011, 15:36 | #1 |
Регистрация: 14.06.2010
Сообщений: 7
|
Сокеты,порты,пакеты...
Всем доброго дня
прошу вашей помощи //--------------- WSADATA wsadata; // Инициализация WinSock. SOCKET s; // Cлущающий сокет. char name[128]; // Имя хоста (компьютера). HOSTENT* phe; // Информация о хосте. SOCKADDR_IN sa; // Адрес хоста IN_ADDR sa1,sa2; // unsigned long flag = 1; // Флаг PROMISC Вкл/выкл. // инициализация WSAStartup(MAKEWORD(2,2), &wsadata); s = socket( AF_INET, SOCK_RAW, IPPROTO_IP ); gethostname(name, sizeof(name)); phe = gethostbyname( name ); ZeroMemory( &sa, sizeof(sa) ); sa.sin_family = AF_INET; sa.sin_addr.s_addr = ((struct in_addr *)phe->h_addr_list[0])->s_addr; bind(s, (SOCKADDR *)&sa, sizeof(SOCKADDR)); // Включение promiscuous mode.(прослушивание) ioctlsocket(s, SIO_RCVALL, &flag); //Приём пакетов while( x!=2 ) //"бесконечный" цикл { Application->ProcessMessages(); int count; count = recv( s, Buffer, sizeof(Buffer), 0 ); // обработка IP-пакета if( count >= sizeof(IPHeader) ) { IPHeader* hdr = (IPHeader *)Buffer; //Начинаем разбор пакета... взято спокойно с просторов интернета вопрос такой как вытащить содержимое пакета из Buffer? адреса от кого и к кому,размер пакета,время жизни вытаскиваю...но,как вытащить именно сам пакет(Packet dump)? на засыпку возможно использование SA.sin_port=htons(PORT); где PORT естественно порт,но у меня вопрос,задав порт,мы будем прослушивать именно его?или мы лишь откроем этот порт? как прослушивать,именно прослушивать определённый порт на компе? |
02.03.2011, 17:15 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Структура IP, TCP, UDP - пакетов описана и стандартизована. И данные находятс в опред месте.
|
03.03.2011, 05:05 | #3 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
> задав порт,мы будем прослушивать именно его?или мы лишь откроем этот порт?
ни то, ни другое. В RAW сокетах с SIO_RCVALL порт не нужен, т.к. они ловят все пакеты, приходящие на прибинденный интерфейс. > как прослушивать,именно прослушивать определённый порт на компе? прсто проверять поле DESTINATION (или SOURCE) PORT, оно есть в UDP и TCP пакетах.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
пакеты в сокетах | Lemon2009 | Общие вопросы по Java, Java SE, Kotlin | 0 | 10.04.2010 14:32 |
[Java] Сокеты и порты в Java | JohnnyQ | Общие вопросы по Java, Java SE, Kotlin | 5 | 10.12.2009 11:52 |
Пакеты | _Studentka_ | Общие вопросы по Java, Java SE, Kotlin | 0 | 04.11.2009 21:44 |
Математические пакеты | yudjin | Общие вопросы Delphi | 0 | 03.05.2008 09:02 |
Пакеты | benjaminfran | Фриланс | 7 | 20.02.2008 21:29 |