|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Sergey V. Artjushkin 2:5020/400 28 Nov 2001 20:24:52 To : All Subject : get remote ip from accept(2) ? --------------------------------------------------------------------------------
День добрый
Коллеги, вот столкнулся с проблемой.
Есть сервер, написанный на Си, слушает определенный порт.
После того как к нему цепляется какой-нибудь клиент, не могу из
accept(2) вытащить ip этого клиента.
-------------------------------
/* set up the listening tcp socket*/
if ( (l_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{ log_error("socket (tcp) error"); exit(0); }
memset(&l_servaddr,0,sizeof(l_servaddr));
l_servaddr.sin_family = AF_INET;
l_servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
l_servaddr.sin_port = htons(c_tcpport);
if ( bind(l_fd,(struct sockaddr *) &l_servaddr, sizeof(l_servaddr)) < 0)
{ log_error ("bind TCP error"); exit(0); }
if ( listen(l_fd, 32) < 0)
{ log_error("listen error"); exit(0); }
if ( (l_connfd = accept(l_fd,(struct sockaddr *) l_cliaddr, &l_addrlen))
< 0)
{ log_error("accept error"); exit(0); }
----------------------------------------
Проблема в том, что (struct sockaddr *) l_cliaddr после успешного
выполнения accept, равен NULL. Хотя по докам должен быть совсем не NULL,
а структура с адресом клиента.
Где я не прав?
Заранее спасибо.
--- ifmail v.2.15dev5
* Origin: ISP Caravan(http://www.caravan.ru) News Server (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/45203cfb7261.html, оценка из 5, голосов 10
|