Не удается назначить запрашиваемый адрес - возможные причины?

У меня есть программа, которая состоит из главного сервера и распределенных подчиненных серверов. Подчиненные серверы отправляют обновления статуса на сервер, и если сервер не получал известий от определенного подчиненного устройства в течение фиксированного периода, он помечает подчиненное устройство как отключенное. Это происходит последовательно.

Из проверки журналов я обнаружил, что ведомое устройство может только отправить одно обновление состояния на сервер, а затем никогда не может отправить другое обновление, всегда сбой при вызове connect () "Невозможно назначить запрошенный адрес (99).

Как ни странно, ведомое устройство может отправлять на сервер несколько других обновлений, и все соединения выполняются на одном и том же порту. Кажется, что наиболее распространенная причина этого сбоя в том, что соединения остаются открытыми, но у меня возникают проблемы с поиском чего-либо оставленного открытым. Есть ли другие возможные объяснения?

Чтобы уточнить, вот как я подключаюсь:

struct sockaddr *sa; // parameter
size_t           sa_size; //parameter
int              i = 1;
int              stream;

stream = socket(AF_INET,SOCK_STREAM,0);
setsockopt(stream,SOL_SOCKET,SO_REUSEADDR,&i,sizeof(i));
bindresvport(stream,NULL);
connect(stream,sa,sa_size);

Этот код находится в функции для получения соединения с другим сервером, и сбой любого из этих 4 вызовов приводит к сбою функции.

Ответы на вопрос(4)

Ваш ответ на вопрос