WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Dest addr в socket...

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Dest addr в socket...
GL опубликован 14-12-2001 10:41 MSK   Click Here to See the Profile for GL   Click Here to Email GL  
Как узнать IP отправителя пакета, при приеме:
recv (socket, buf, sizeof(buf), 0);
purpe опубликован 14-12-2001 11:13 MSK     Click Here to See the Profile for purpe  Click Here to Email purpe     
The Windows Sockets getpeername function gets the address of the peer to which a socket is connected.

int getpeername(
SOCKET s,
struct sockaddr FAR *name,
int FAR *namelen
);


------------------------------------------

предварительно объяви:

SOCKADDR_IN s_from;

LPSTR lpAddr;

а потом получай адрес, с которым соединён сокет:

int fromlen=sizeof(SOCKADDR_IN);
getpeername(socket,(struct sockaddr *)&s_from,&fromlen);
lpAddr = inet_ntoa(s_from.sin_addr);

Jack опубликован 14-12-2001 11:18 MSK     Click Here to See the Profile for Jack  Click Here to Email Jack     
Как используя recv не скажу, но IMHO, для потокового обмена есть accept(...), которая и возвращает IP адрес вызывающего хоста.
purpe опубликован 14-12-2001 11:31 MSK     Click Here to See the Profile for purpe  Click Here to Email purpe     
та я вот тож сам порылся в хелпе и накропал на скорую руку не проверяя работоспособность :)
с recvfrom проще, она сразу возвращает структурку с обратным адресом, а у recv нет такого параметра.
думаю, что получать обратный адрес через accept будет правильнее.
GL опубликован 14-12-2001 11:37 MSK     Click Here to See the Profile for GL  Click Here to Email GL     
Учитывая что я пишу под Linux, способ с accept действительно логичен, просто както и не задумывался... =/
...IP надо получать при создании логического connect'а, а не при приеме пакета - логично!
Спасибо...!

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.