Есть ли способ повторно использовать адреса сокетов в C ++ / Linux - PullRequest
0 голосов
/ 21 марта 2012

У меня есть цикл while для повторной попытки подключения к устройству. проблема в том, что каждый раз, когда он повторяет попытку, он использует один и тот же дескриптор сокета (закрытие и открытие снова), это безопасно?

while(retry)
  create socket
  read(use socket created before)
  if read fails
     close socket and retry

Я хочу, чтобы новый сокет fd соединялся с сервером и читал снова. Можно ли повторно использовать тот же самый сейф в случае, если чтение не удалось?

Ответы [ 2 ]

2 голосов
/ 21 марта 2012

Если вы на самом деле close сокет, то я бы предложил создать новый сокет, поскольку fd, используемый для описания сокета, теперь недопустим, поэтому повторное использование того же дескриптора файла может вызвать ошибки.

Обычно, хотя лучше закрыть старое и создать новое.

1 голос
/ 21 марта 2012

, так как вы позвонили в bind или подключились к сокету, вы не можете изменить адрес.Вы должны закрыть сокет и создать новый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...