Когда звонить в setockopt? Перед bind() и connect()?

Я унаследовал некоторый код TCP, который вызывал:

bind(tcpSocket, (struct sockaddr*)&server_addr, sizeof(server_addr));

до звонка в

setsockopt(tcpSocket, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int));

Неудивительно, что это привело к сообщению: «Адрес уже используется». Простая замена порядка вызовов решила проблему.

В связи с этим возникает вопрос: вообще, должны ли какие-либо вызовы setsockopt() выполняться перед вызовом bind()? Перед звонком connect()?


person jski    schedule 19.09.2014    source источник


Ответы (1)


SO_REUSEADDR необходимо установить перед bind(). Однако не все параметры нужно устанавливать до bind() или даже до connect(). Это действительно зависит от конкретных установленных параметров, поэтому вам придется иметь дело с ними на основе параметра за параметром.

person Remy Lebeau    schedule 19.09.2014