Высокопроизводительная библиотека сокетов для windows

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

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

3 ответа

Решение

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

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

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

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

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

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

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

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