Проблема такая:
Передается на сервак пакет, длтной , скажем 100 байт.
При передачи этого пакета n раз вызывается дисконнект:
shutdown (m_sockReader, 2);
closesocket(m_sockReader);
//восстанавливаем коннект
sReader = socket( AF_INET, SOCK_STREAM, 0 );
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_addr.S_un.S_addr = inet_addr( sHost.c_str() );
addr.sin_port = htons(iPortReader);
if( connect( sReader, (sockaddr*)&addr, sizeof( struct sockaddr_in) ) == SOCKET_ERROR )
{
return false;
}
так вот , часто возникает такая ситуация, что после некоторого кол-ва успешных реконнектов очередной коннект не проходит уже и WSAgetlastError пишет ошибку 10048 "Only one usage of each socket address (protocol/network address/port) is normally permitted. "
netstat показывает кучу открытых портов, они остаются висеть даже после закрытия сервера и клиента, и эти соединения исчезают через 1-2 минуты.
Можно ли что-нибудь тут сделать, или нужно жать 1-2 минуты закрытия соединений?
И еще вопрос : стоит ли вызывать после closesocket WSAclenup или достаточно использовать только closesocket?