Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: как получить ip по socket ?  (Прочитано 7744 раз)
0 Пользователей и 1 Гость смотрят эту тему.
LW
Гость
« : 25-10-2008 18:51 » 

необходимо както получить ip адресс по сокету. кто-нибудь знает, это вообще реально? Уже поГУУГЛил капитально. А результат все то же - ничего.  Я зол!

Проблема следующая. Есть сокет клиента (клиент находится гдето в локальной сетке). В какой то момент нужно показать юзеру IP адрес этого клиента. И при этом очень не хочется сохранять адрес, полученный аж при accept на все время работы проги.

З.Ы.: поскольку отправлять сообщ через конкретный сокет можно (а в "послание" вроде должен включатся адрес "получателя"="ip+port") - то, насколько я понимаю должна же быть возможность выцепить это ip получателя...
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 25-10-2008 19:59 » 

LW, А что так страшит сохранить 4 байта с того самого accept?

Это из help libc
Цитата
Who is Connected to Me?

int getpeername (int socket, struct sockaddr *addr, socklen_t *length-ptr)    Function
The getpeername function returns the address of the socket that socket is connected to; it stores the address in the memory space specified by addr and length-ptr. It stores the length of the address in *length-ptr.

See Socket Addresses, for information about the format of the address. In some operating systems, getpeername works only for sockets in the Internet domain.

The return value is 0 on success and -1 on error. The following errno error conditions are defined for this function:

EBADF
    The argument socket is not a valid file descriptor.
ENOTSOCK
    The descriptor socket is not a socket.
ENOTCONN
    The socket socket is not connected.
ENOBUFS
    There are not enough internal buffers available.
Но думаю, подобная функция есть и под винду.
« Последнее редактирование: 25-10-2008 20:05 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
LW
Гость
« Ответ #2 : 25-10-2008 20:28 » 

 Улыбаюсь да, есть под винду! Класс! блин, столько искал...
Огромный РЕСПЕКТ!  Класс!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines