В настоящее время вы привязываетесь к INADDR_ANY
, что означает привязку ко всем интерфейсам:
address.sin_addr.s_addr = INADDR_ANY;
Если вы хотите привязать к указанному c адресу, вам необходимо установить его. Вы можете использовать функцию inet_addr
для преобразования строки IPv4 в значение адреса:
address.sin_addr.s_addr = inet_addr("95.96.10.1");
Кроме того, параметры сокета не могут быть объединены ИЛИ. Вы можете работать только по одному за раз.
if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)))
{
perror("setsockopt");
exit(EXIT_FAILURE);
}
if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEPORT, &opt, sizeof(opt)))
{
perror("setsockopt");
exit(EXIT_FAILURE);
}