По теме: 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)); } }