POCOライブラリにソケット用のとても素敵なライブラリを見ました。これは、LinuxシステムとWindowsシステムの両方で機能する「クラシック」アプローチ、主にSELECTベースのアプローチを使用します。
高性能プロキシ/Socksサーバーで使用したいので、非同期IO(完了ポート?)を使用するWindowsに固有のものがあるかどうかを知りたいです。
おそらくBoost::ASIOはあなたが探しているものですか?
オープンソースのBadVPNソフトウェアプロジェクトの一環として、C言語用のイベント駆動型(シングルスレッド)のクロスプラットフォームネットワークプログラミングフレームワークを開発しました。Linuxではepollを使用し、WindowsではIOCPを使用します。
いくつかの重要な部分:
フローベースプログラミングを多用します。たとえば、TCPの抽象化であるBConnectionは、StreamPassInterfaceおよびStreamRecvInterface汎用ストリームI/Oインターフェイスを使用します。これは非常に便利です。たとえば、アプリケーションにSSLサポートを追加する必要がある場合、 BConnectionの上にBSSLConnectionオブジェクトをスローする以外に必要なことはほとんどありません。
フレームワークのほとんどは十分に文書化されていますが、その使用方法に関するガイドはまだ提供していません。この基本的なプログラムを出発点として使用できます。学習を目的としたものではありませんが、tun2socksプログラム、特に付随する小さなudpgwプログラムが役立つ場合があります。
SOCKSについて言及されたので、私のフレームワークでは、tun2socksで使用される非常に単純なSOCKS5クライアント(認証などなし)も実装しました。
ネットワークゲーム用に作成したCライブラリを提案できます。このライブラリは、大量の同時短いTCP接続を対象としていました。非同期epoll、kqueues、IOCPまたは同期スレッドを使用します。インターフェイスは非常にシンプルで、node.jsが機能する方法でコールバックを介して抽象化されます。エコーサーバーとして、1秒あたり60kのリクエストを処理できます。https://github.com/freedib/gasioを参照してください