Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Адрес отправителя [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]

Конечно есть, а чем ты получаешь пакет?


Наверх

Титульная страница Поиск, карта сайта Написать письмо