В чем разница между FIONBIO и FIOASYNC для сокетов?
Кажется, обе опции можно использовать, чтобы сделать сокет неблокирующим / асинхронным?
Или в чем разница между неблокирующим и асинхронным?
1 ответ
Если вы еще этого не сделали, вы можете увидеть разницу между неблокирующими и блокирующими сокетами на странице сокетов BSD в Википедии.
Также вы можете посмотреть на странице MSDN ioctlsocket () несколько подробностей о FIONBIO.
FIOASYNC Включает простую форму уведомления асинхронного ввода-вывода. Эта команда заставляет ядро отправлять сигнал SIGIO процессу или группе процессов, когда возможен ввод / вывод. Только сокеты, ttys и pseudo-tt реализуют эту функциональность.
FIONBIO Включает неблокирующий ввод / вывод. Эффект подобен установке флага O_NONBLOCK с подпрограммой fcntl. Третий параметр подпрограммы ioctl для этой команды - указатель на целое число, которое указывает, включен или отключен неблокирующий ввод-вывод. Значение 0 отключает неблокирующий ввод / вывод.
Я надеюсь, что это поможет вам немного.