Я занимаюсь программированием сокетов в Linux. Был вопрос. Как мы можем разрешить конкретные IP-адреса для подключения к нашему серверу .Сокеты в Linux - serv_addr.sin_addr.s_addr = INADDR_ANY;
Например:
- Разрешить 10.0.0.1
- Запретить 10.0.0.1
Я специально говорю об этой строке коды, где мы заполняем INADDR_ANY наших sockaddr_in структуры
serv_addr.sin_addr.s_addr = INADDR_ANY;
Остальной Кодекса только для справки:
struct sockaddr_in serv_addr;
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY; // Here's my question!!
serv_addr.sin_port = htons(portno);
Я немного ржавый, но не 'serv_addr' серверный сокет? Как, например, это сокет TCP, который вы используете для прослушивания? В строке, на которую вы ссылаетесь, это просто настройка IP-адреса интерфейса для прослушивания, а не подключение. – austin
@austin Фактически «serv_addr» - это структура, которая содержит информацию о сервере. Разрешено использование портов, IP-адресов, TCP/IP v4/v6 и т. Д. И да, это позволяет принимать все соединения. Я хочу ограничить это конкретными IP-адресами. Btw, прослушивание и принятие выполняется после этого шага. – Safeer
Остин абсолютно прав: если serv_addr используется для привязки прослушивающего сокета, вы не можете разместить там IP-адрес партнера. –