Есть ли какая-то польза от использования функций Windows winsock API по сравнению с функциями сокетов в стиле BSD? - PullRequest
0 голосов
/ 08 ноября 2008

Есть ли какая-либо польза для Windows от использования функций winsock WSA по сравнению с функциями в стиле BSD?

Ответы [ 4 ]

2 голосов
/ 10 ноября 2008

Наиболее существенным отличием является наличие API-интерфейсов в стиле асинхронных событий в Winsock.

С сокетами Беркли каждый раз, когда вы read или write, ваше приложение будет «блокировать», пока сеть не будет готова, что может сделать ваше приложение не отвечающим (если сетевой ввод-вывод не обрабатывается в другом потоке).

С помощью асинхронного интерфейса вы можете организовать вызов функции обратного вызова как часть обычного цикла сообщений Windows каждый раз, когда данные принимаются или когда буфер передачи пуст.

2 голосов
/ 08 ноября 2008

Только если вы планируете развертывание на унаследованной платформе, такой как Windows 95, или в Winsock API есть что-то, без чего вы абсолютно не можете жить, и вы не хотите работать самостоятельно (<- сомнительно).

1 голос
/ 10 ноября 2008

Если вы разрабатываете вокруг парадигмы BSD, ваш код может работать на других платформах с меньшими затратами на портирование. Если вы предполагаете, что ваша сетевая библиотека будет поддерживать асинхронный ввод-вывод (как упоминает Alnitak), вам придется проделать гораздо больше работы, если это вытащит из-под вас.

Конечно, если вы уверены, что никогда не покинете теплую грудь Microsoft, смело отправляйтесь в город.

0 голосов
/ 10 ноября 2008

Что касается ответа Альнитака, я согласен - я бы просто добавил, что вам не нужно использовать цикл сообщений для использования асинхронных операций над сокетами. Использование портов завершения ввода / вывода является очень масштабируемым способом создания высокопроизводительного сетевого приложения.

...