2014-09-19 3 views
4

Я унаследовал некоторые TCP код, который называется:Когда звонить, набирать номер? Перед bind() и connect()?

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

перед вызовом

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

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

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

ответ

4

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