|
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
|