В чем разница между FIONBIO и FIOASYNC для сокетов?

Кажется, обе опции можно использовать, чтобы сделать сокет неблокирующим / асинхронным?

Или в чем разница между неблокирующим и асинхронным?

1 ответ

Если вы еще этого не сделали, вы можете увидеть разницу между неблокирующими и блокирующими сокетами на странице сокетов BSD в Википедии.

Также вы можете посмотреть на странице MSDN ioctlsocket () несколько подробностей о FIONBIO.

По данным IBM:

FIOASYNC Включает простую форму уведомления асинхронного ввода-вывода. Эта команда заставляет ядро ​​отправлять сигнал SIGIO процессу или группе процессов, когда возможен ввод / вывод. Только сокеты, ttys и pseudo-tt реализуют эту функциональность.

FIONBIO Включает неблокирующий ввод / вывод. Эффект подобен установке флага O_NONBLOCK с подпрограммой fcntl. Третий параметр подпрограммы ioctl для этой команды - указатель на целое число, которое указывает, включен или отключен неблокирующий ввод-вывод. Значение 0 отключает неблокирующий ввод / вывод.

Я надеюсь, что это поможет вам немного.

Другие вопросы по тегам