Форум: "Сети";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
ВнизАдрес отправителя Найти похожие ветки
← →
Инкогнито (2004-01-16 18:30) [0]Здраствуйте МАСТЕРА!
Подскажите пожалуйста, как узнать адрес машины, с которой пришли данные(WinSock).Ведь в заголовке IP-пакета есть этот адрес.
Зарание спасибо ...
← →
Rouse_ © (2004-01-16 19:21) [1]Конечно есть, а чем ты получаешь пакет?
← →
Инкогнито (2004-01-16 21:24) [2]Дык какая разница чем я получаю етот пакет. Мне ж в данной ситуации не пакет нужет, а адрес его отправителя.
WinSock предоставляет возможность получить этот адрес?
← →
Rouse_ © (2004-01-16 22:17) [3]Предоставляет.
Тебе расписать структуру пакета со смещениями и структурами, или ты хочешь услышать что-то другое...
PS: Так чем получаешь пакет?
← →
Nikolay M. © (2004-01-17 00:23) [4]
> Дык какая разница чем я получаю етот пакет. Мне ж в данной
> ситуации не пакет нужет, а адрес его отправителя.
Прямо как в анекдоте: "На крыше сидят два зеленых слона, сколько мне лет?" :)
Под пытками не скажу, каким образом получаю данные, так как получить адрес отправителя...
← →
Rouse_ © (2004-01-17 00:29) [5]> Под пытками не скажу, каким образом получаю данные
5 балов!!! Даже в потрепаловку не будем ехать, пусть учатся ;)))
← →
Инкогнито (2004-01-17 08:31) [6]Я получаю получаю данные recv. Но ведь я тем самым не пакет получаю, а его поле данных.
Rouse_ [1] >
//Тебе расписать структуру пакета со смещениями и структурами, //или ты хочешь услышать что-то другое...
Структуру пакета со смещениями я знаю. Мне нужна процедура(функция), которая бы мне возвращала либо заголовок пакета(пусть даже весь пакет, но с заголовком), либо просто поле оттуда - адрес отправителя ...
Помигите, пожалуйста!
← →
Инкогнито (2004-01-17 12:04) [7]Спасиба! я кажется понял как заголовок извлекать ...
У меня возникли неточности со структурой пакета.
Rouse_ [3]:
> Тебе расписать структуру пакета со смещениями и структурами,или ты хочешь услышать что-то другое...
Да, распиши пожалуйтса структуры IP и UDP.
Благодарю.
← →
Verg © (2004-01-17 12:32) [8]Для датаграмм (типа UDP или просто сивольный сокет IP) нужно применять recvfrom. Она и данные прочтет и адрес отправителя.
В остальных случаях:
1. Клиентский сокет SOC_STREAM - без комментариев :)
2. Серверное TCP соединение)
Ну, во-первых ф-ция accept при установлении соединения вернет адрес клиента.
3. В любом случае есть getpeername
← →
Nikolay M. © (2004-01-17 12:33) [9]http://ava.org.ua/topics/printable/?read=155
Ну и, RFC, конечно.
"Sockets 2 reference" (MSHelp\SOCK2.HLP) тоже полезно, если не смотрел еще.
← →
Verg © (2004-01-17 14:11) [10]
> Nikolay M. © (17.01.04 12:33) [9]
> http://ava.org.ua/topics/printable/?read=155
Замечательная статейка.
Хотелось бы только добавить:
Copyright (c) by Alexander Pevzner (pzz@pzz.msk.ru), 1998-1999
← →
Verg © (2004-01-17 14:13) [11]Просто вот реальное начало оригинала:
****************************************************************************
ВВЕДЕНИЕ В УСТРОИСТВО И РЕАЛИЗАЦИЮ TCP/IP
Version 1.0.1
Copyright (c) by Alexander Pevzner (pzz@pzz.msk.ru), 1998-1999
Этот текст может свободно распостраняться и публиковаться. При
распостранении и публикации обязательна ссылка на автора. Если в
оригинальный текст были внесены изменения, этот факт должен быть
указан.
АВТОР НЕ НЕСЕТ НИКАКОЙ ОТВЕТСТВЕННОСТИ ЗА ДОСТОВЕРНОСТЬ ИНФОРМАЦИИ,
ИЗЛОЖЕННОЙ В ДАННОМ ТЕКСТЕ И ЗА ПОСЛЕДСТВИЯ ЛЮБОГО ИСПОЛЬЗОВАНИЯ
ДАННОГО ТЕКСТА.
****************************************************************************
1. Общие слова.
Сетевой порядок байт - другой, чем у интеловских процессоров.
Сначала идет старший байт, далее по порядку. Это относится и
к 16-битным, и к 32-битным словам. Когда програмируют на C,
обычно обзаводятся platform-depended функциями преобразования:
u_short htons ( u_short ); - host-to-network short
u_short ntohs ( u_short ); - network-to-host short
u_long htonl ( u_long ); - host-to-network long
u_long ntohl ( u_long ); - network-to-host long
В unix"овской библиотеке и в winsock"е такие фунции являются
...
← →
Инкогнито (2004-01-17 14:25) [12]Спасибо ВАМ! помогли разобраться.
Удачи всем.
← →
SammIk © (2004-01-18 15:06) [13]ГА
getpeername
The Windows Sockets getpeername function retrieves the name of the peer to which a socket is connected.
int getpeername (
SOCKET s,
struct sockaddr FAR *name,
int FAR *namelen
);
Parameters
s
[in] Descriptor identifying a connected socket.
name
[out] The structure that receives the name of the peer.
namelen
[in/out] Pointer to the size of the name structure.
← →
Nikolay M. © (2004-01-19 12:51) [14]
> Verg ©
Ну, это уже на совести плагиаторов.
Если автору ветки ссылка помогла - это главное. Конечно, лучше и правильнее, чтобы это был первоисточник, просто привел ту ссылку, которую нашел.
← →
Verg © (2004-01-19 13:07) [15]
> Nikolay M. © (19.01.04 12:51) [14]
>
> > Verg ©
>
> Ну, это уже на совести плагиаторов.
> Если автору ветки ссылка помогла - это главное. Конечно,
> лучше и правильнее, чтобы это был первоисточник, просто
> привел ту ссылку, которую нашел.
Я и не спорю.
Просто впервые увидел эту статью опубликованной и без указания авторства. Казалось бы чего сложного, да? Просто, хотя бы в знак уважения....
Кстати именно в оригинале даны исходники реализации основных компонент стека ip-arp-icmp-udp по которым можно было осваивать все это дело на практике. Пусть эта реализация и упрощенная, но в деле освоения это даже плюс.
Пять поваренных книг не заменят однажды самостоятельно приготовленного блюда, однако.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.029 c