В чем разница между FIONBIO и FIOASYNC для сокетов? - PullRequest
2 голосов
/ 16 сентября 2011

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

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

1 Ответ

3 голосов
/ 16 сентября 2011

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

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

Согласно IBM :

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

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

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

...