Я унаследовал некоторый код TCP, который вызывал:
bind(tcpSocket, (struct sockaddr*)&server_addr, sizeof(server_addr));
до звонка в
setsockopt(tcpSocket, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int));
Неудивительно, что это привело к сообщению: «Адрес уже используется». Простая замена порядка вызовов решила проблему.
В связи с этим возникает вопрос: вообще, должны ли какие-либо вызовы setsockopt()
выполняться перед вызовом bind()
? Перед звонком connect()
?