![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Адрес отправителя [D6, WinXP]
Инкогнито © (2004-01-16 18:30:00)Здраствуйте МАСТЕРА!
Подскажите пожалуйста, как узнать адрес машины, с которой пришли данные(WinSock).Ведь в заголовке IP-пакета есть этот адрес.
Зарание спасибо ...
Verg (2004-01-19 13:07:00) [1]
> Nikolay M. © (19.01.04 12:51) [14]
>
> > Verg ©
>
> Ну, это уже на совести плагиаторов.
> Если автору ветки ссылка помогла - это главное. Конечно,
> лучше и правильнее, чтобы это был первоисточник, просто
> привел ту ссылку, которую нашел.
Я и не спорю.
Просто впервые увидел эту статью опубликованной и без указания авторства. Казалось бы чего сложного, да? Просто, хотя бы в знак уважения....
Кстати именно в оригинале даны исходники реализации основных компонент стека ip-arp-icmp-udp по которым можно было осваивать все это дело на практике. Пусть эта реализация и упрощенная, но в деле освоения это даже плюс.
Пять поваренных книг не заменят однажды самостоятельно приготовленного блюда, однако.
Nikolay M. (2004-01-19 12:51:00) [2]
> Verg ©
Ну, это уже на совести плагиаторов.
Если автору ветки ссылка помогла - это главное. Конечно, лучше и правильнее, чтобы это был первоисточник, просто привел ту ссылку, которую нашел.
SammIk (2004-01-18 15:06:00) [3]ГА
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.
Инкогнито (2004-01-17 14:25:00) [4]Спасибо ВАМ! помогли разобраться.
Удачи всем.
Verg (2004-01-17 14:13:00) [5]Просто вот реальное начало оригинала:
****************************************************************************
ВВЕДЕНИЕ В УСТРОИСТВО И РЕАЛИЗАЦИЮ 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'е такие фунции являются
...
Verg (2004-01-17 14:11:00) [6]
> 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
Nikolay M. (2004-01-17 12:33:00) [7]http://ava.org.ua/topics/printable/?read=155
Ну и, RFC, конечно.
"Sockets 2 reference" (MSHelp\SOCK2.HLP) тоже полезно, если не смотрел еще.
Verg (2004-01-17 12:32:00) [8]Для датаграмм (типа UDP или просто сивольный сокет IP) нужно применять recvfrom. Она и данные прочтет и адрес отправителя.
В остальных случаях:
1. Клиентский сокет SOC_STREAM - без комментариев :)
2. Серверное TCP соединение)
Ну, во-первых ф-ция acceptпри установлении соединения вернет адрес клиента.
3. В любом случае есть getpeername
Инкогнито (2004-01-17 12:04:00) [9]Спасиба! я кажется понял как заголовок извлекать ...
У меня возникли неточности со структурой пакета.
Rouse_ [3]:
> Тебе расписать структуру пакета со смещениями и структурами,или ты хочешь услышать что-то другое...
Да, распиши пожалуйтса структуры IP и UDP.
Благодарю.
Инкогнито (2004-01-17 08:31:00) [10]Я получаю получаю данные recv. Но ведь я тем самым не пакет получаю, а его поле данных.
Rouse_ [1] >
// Тебе расписать структуру пакета со смещениями и структурами, //или ты хочешь услышать что-то другое...
Структуру пакета со смещениями я знаю. Мне нужна процедура(функция), которая бы мне возвращала либо заголовок пакета(пусть даже весь пакет, но с заголовком), либо просто поле оттуда - адрес отправителя ...
Помигите, пожалуйста!
Rouse_ (2004-01-17 00:29:00) [11]> Под пытками не скажу, каким образом получаю данные
5 балов!!! Даже в потрепаловку не будем ехать, пусть учатся ;)))
Nikolay M. (2004-01-17 00:23:00) [12]
> Дык какая разница чем я получаю етот пакет. Мне ж в данной
> ситуации не пакет нужет, а адрес его отправителя.
Прямо как в анекдоте: "На крыше сидят два зеленых слона, сколько мне лет?" :)
Под пытками не скажу, каким образом получаю данные, так как получить адрес отправителя...
Rouse_ (2004-01-16 22:17:00) [13]Предоставляет.
Тебе расписать структуру пакета со смещениями и структурами, или ты хочешь услышать что-то другое...
PS: Так чем получаешь пакет?
Инкогнито (2004-01-16 21:24:00) [14]Дык какая разница чем я получаю етот пакет. Мне ж в данной ситуации не пакет нужет, а адрес его отправителя.
WinSock предоставляет возможность получить этот адрес?
Rouse_ (2004-01-16 19:21:00) [15]Конечно есть, а чем ты получаешь пакет?