оператор = на fd_set - сокет связи Linux - PullRequest
0 голосов
/ 24 мая 2011

Я пишу программу, которая использует select (), для чтения fd_set.
В программе я сохраняю два fd_sets:
1. fd_set с именем DB со всеми fd, которые я могуиметь дело с.
2. fd_set с именем toSelect - который я отправляю методу select () и обрабатывает позже после возврата из select ().

Перед вызовом select () я делаю это:
toSelect = DB;
Для того, чтобы скопировать все fd в DB в toSelect fd_set.
Поскольку моя программа работает не так хорошо (появляется сообщение «Сброс соединения по пиру»), возможно, что-то не так с моим кодом.
Это назначение в порядке?Если нет, то как я могу скопировать один fd_set в другой без использования оператора =?
Спасибо.

Ответы [ 2 ]

0 голосов
/ 24 мая 2011

Внутренние детали fd_set, включая то, будет ли определяться operator = (и проходить компиляцию), определяется реализацией.Единственное, что fd_set обещает вам, это интерфейс, который он предоставляет в виде макросов (или функций) FD_SET, FD_CLEAR, FD_ISSET, FD_ZERO.

Если вы хотите использовать оператор = вы можете написать свой собственныйкласс-обёртка для него.

0 голосов
/ 24 мая 2011

Вместо того, чтобы делать toSelect = DB, попробуйте использовать макросы FD_ISSET и FD_SET, чтобы скопировать значения из одного в другое и посмотреть, сохраняется ли проблема.

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