Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2011, 15:36   #1
asdasys
 
Регистрация: 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 естественно порт,но у меня вопрос,задав порт,мы будем прослушивать именно его?или мы лишь откроем этот порт?
как прослушивать,именно прослушивать определённый порт на компе?
asdasys вне форума Ответить с цитированием
Старый 02.03.2011, 17:15   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Структура IP, TCP, UDP - пакетов описана и стандартизована. И данные находятс в опред месте.
p51x вне форума Ответить с цитированием
Старый 03.03.2011, 05:05   #3
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> задав порт,мы будем прослушивать именно его?или мы лишь откроем этот порт?

ни то, ни другое. В RAW сокетах с SIO_RCVALL порт не нужен, т.к. они ловят все пакеты, приходящие на прибинденный интерфейс.

> как прослушивать,именно прослушивать определённый порт на компе?

прсто проверять поле DESTINATION (или SOURCE) PORT, оно есть в UDP и TCP пакетах.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
пакеты в сокетах 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