высокопроизводительная библиотека сокетов для windows - PullRequest
0 голосов
/ 23 января 2012

Я видел очень хорошую библиотеку для сокетов в библиотеке POCO.При этом используется «классический» подход, который работает как в системах Linux, так и в системах Windows, в основном на основе SELECT.

Я хотел бы знать, есть ли что-то конкретное для окон, использующих асинхронный ввод-вывод (порты завершения?), Как яхотите использовать его на высокопроизводительном прокси / сервере socks.

Ответы [ 3 ]

1 голос
/ 23 января 2012

Возможно, Boost :: ASIO - это то, что вы ищете?

0 голосов
/ 14 февраля 2013

Я могу предложить библиотеку C, которую я написал для сетевой игры.Эта библиотека была предназначена для одновременных коротких TCP-соединений большого объема.Он использует асинхронный epoll, kqueues, IOCP или синхронные потоки.Интерфейс очень прост и абстрагируется от функции обратного вызова, как работает node.js.Как эхо-сервер, он может обрабатывать 60 тыс. Запросов в секунду.Смотри https://github.com/freedib/gasio

0 голосов
/ 23 января 2012

В рамках моего проекта с открытым исходным кодом BadVPN я разработал основанную на событиях (однопоточную) платформу сетевого кроссплатформенного программирования для языка Си. Он использует epoll в Linux и IOCP в Windows.

Некоторые важные части:

Он интенсивно использует потоковое программирование . Например, BConnection, абстракция TCP, использует StreamPassInterface и StreamRecvInterface универсальные интерфейсы потокового ввода-вывода. Это очень полезно; например, если вам нужно добавить поддержку SSL в ваше приложение, вам потребуется немного больше, чем бросить объект BSSLConnection поверх BConnection.

Хотя большая часть фреймворка хорошо документирована, я пока не предоставляю никаких руководств по его использованию. Вы можете использовать эту базовую программу в качестве отправной точки. Хотя программа tun2socks и не предназначена для обучения, она может оказаться полезной, в особенности сопровождающая меньшая программа udpgw.

Поскольку вы упомянули SOCKS, в моей структуре я также реализовал очень простой клиент SOCKS5 (без аутентификации и т. Д.), Который используется tun2socks.

...