SO_REUSEADDR с сокетами UDP в Linux. Это необходимо?

Мой сокет UDP bind() подключается к порту 53 (DNS). Имеет ли UDP состояние TIME_WAIT или использует SO_REUSEADDR бессмысленно в сокетах UDP?


person dongle26    schedule 22.09.2012    source источник
comment
Почему вы привязываете сокет UDP? Если это необходимо, возможно, вам нужно использовать TCP   -  person Adrian Cornish    schedule 22.09.2012
comment
@Adrian Cornish Как еще сообщить ОС, какой порт прослушивает ваш UDP-сервер?   -  person Barmar    schedule 22.09.2012
comment
Вы вроде про клиента, это про сервер. Например, сервер NTP должен быть привязан к порту 123.   -  person Barmar    schedule 22.09.2012
comment
Вот объяснение варианта использования: происходит с ранее открытым сокетом"> stackoverflow.com/questions/775638/   -  person Serge    schedule 22.09.2012


Ответы (1)


UDP не имеет соединений, поэтому нет ничего похожего на TIME_WAIT. Вам не нужно использовать SO_REUSEADDR.

Если вы прослушиваете широковещательный или многоадресный адрес, вам может потребоваться использовать SO_REUSEPORT, чтобы при наличии нескольких прослушивателей на одном компьютере они не конфликтовали. Однако, насколько я могу судить, в Linux этого нет.

person Barmar    schedule 22.09.2012