TCP-сервер Linux: чтение IP-адреса клиента перед принятием соединения

По теме: C ++ Winsock API, как получить IP-адрес клиента перед тем, как принять соединение ?

Привет, когда вы запускаете TCP-сервер (написанный на C, с использованием Berkeley Socket API), можно ли прочитать IP-адрес / порт клиента перед фактическим принятием соединения?

Насколько я знаю вас необходимо принять соединение сначала и закрыть его сразу после этого, если вы не хотите общаться с данным клиентом из-за его IP-адреса.

Псевдокод (I я ищу peek и метод отказа ):

 int serverfd = listen(...);
 for(;;) {
     struct sockaddr_in clientAddr;
     peek(serverfd, &clientAddr, sizeof(clientAddr));
     if(isLegit(&clientAddr)) {
         int clientfd = accept(serverfd, &clientAddr, sizeof(clientAddr));
         handleClient(clientfd);
     } else {
         refuse(serverfd, &clientAddr, sizeof(clientAddr));
     }
 }
5
задан Community 23 May 2017 в 12:31
поделиться