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