Какова цель SO_REUSEADDR?

Я пытаюсь понять код многоадресной рассылки, и я не понимаю полезности небольшой части:

int fd_socket = socket(AF_INET, SOCK_DGRAM, 0);
u_int yes = 1;

setsockopt(fd_socket, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes));

Я не понимаю полезности функции setsockopt. Я понимаю, что эта функция позволяет изменять сокет в ядре, и SOL_SOCKET потому что моя модификация касается уровня сокета, а не уровня протокола. Я не понимаю SO_REUSEADDR.


person Community    schedule 13.11.2016    source источник


Ответы (1)


Для сокетов UDP установка параметра SO_REUSEADDR позволяет открывать несколько сокетов на одном и том же порту.

Если эти сокеты также присоединены к группе многоадресной рассылки, любой пакет многоадресной рассылки, поступающий в эту группу и порт, будет доставлен во все сокеты, открытые на этом порту.

person dbush    schedule 13.11.2016