Столкнулся с такой проблемой:
m_Socket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ) ;
const sockaddr& addr = local.GetSockaddr() ;
// 0.0.0.0:30000
bind( m_Socket, &addr, local.AddressSize( addr ) ) ;
listen( m_Socket, 100 ) ;
// do something
close( m_Socket ) ;
Потом делаю похожую вещь:
m_Socket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ) ;
const sockaddr& addr = local.GetSockaddr() ;
// 127.0.0.1:30000
bind( m_Socket, &addr, local.AddressSize( addr ) ) ;
// bind returns EADDRINUSE
Если подождать несколько секунд перед второй частью, то ошибки не будет, если делать без задержки, то получаю такую ошибку. Система Ubuntu 16.04. Я так понимаю система не дает переиспользовать порт какое-то время. Это можно как-то обойти?