Автор
|
Тема: Dest addr в socket...
|
GL |
опубликован 14-12-2001 10:41 MSK
Как узнать IP отправителя пакета, при приеме: recv (socket, buf, sizeof(buf), 0);
|
purpe
|
опубликован 14-12-2001 11:13 MSK
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
Как используя recv не скажу, но IMHO, для потокового обмена есть accept(...), которая и возвращает IP адрес вызывающего хоста. |
purpe
|
опубликован 14-12-2001 11:31 MSK
та я вот тож сам порылся в хелпе и накропал на скорую руку не проверяя работоспособность :) с recvfrom проще, она сразу возвращает структурку с обратным адресом, а у recv нет такого параметра. думаю, что получать обратный адрес через accept будет правильнее.
|
GL
|
опубликован 14-12-2001 11:37 MSK
Учитывая что я пишу под Linux, способ с accept действительно логичен, просто както и не задумывался... =/ ...IP надо получать при создании логического connect'а, а не при приеме пакета - логично! Спасибо...! |