Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: сокеты
Форум на CrossPlatform.RU > Разработка > С\С++
oleg_2
Язык СИ
ОС UNIX
Пытаюсь написать сервер
подобный описанному сдесь
http://rsdn.ru/article/unix/sockets.xml (листинг 6).

Машина имеет несколько ip-адресов.
Прием запросов со всех имеющихся ip-адресов.
Вопрос: возможно ли узнать на какой ip-адрес
из них пришел запрос клиента?

Краткое содержание:

struct sockaddr_in addr;
struct sockaddr_in addr1;

//--- слушающий сокет sd0 ---
sd0 = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

//--- привязать все имеющиеся ip-адреса ---
addr.sin_addr.s_addr = INADDR_ANY;
k=bind(sd0, (struct sockaddr *)&addr, sizeof(addr));
listen(sd0, 5);
while(1){
sd=accept(sd0, (struct sockaddr *)&addr1, &k);
//--- при возврате из accept
// структура addr1 содержит ip-адрес клиента ---

обработка запроса

}

Кто знает, прошу ответить.
ViGOur
Глянь на функцию getsockname...
oleg_2
Спасибо,
Да. Это та функция, которая нужна.
Да. Всё работает и вопрос решён. Спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.