我在 POCO 库中看到了一个非常好的套接字库。这使用了适用于 linux 和 windows 系统的“经典”方法,主要是基于 SELECT 的方法。
我想知道是否有特定于使用异步 IO(完成端口?)的 Windows 的东西,因为我想在高性能代理/袜子服务器上使用它。
也许 Boost::ASIO 是您正在寻找的东西?
作为我的开源BadVPN 软件项目的一部分,我为 C 语言开发了一个事件驱动(单线程)跨平台网络编程框架。它在 Linux 上使用 epoll,在 Windows 上使用 IOCP。
一些重要的部分:
它大量使用基于流的编程。例如,TCP 的抽象 BConnection 使用StreamPassInterface和StreamRecvInterface通用流 I/O 接口。这非常有用;例如,如果您需要为您的应用程序添加 SSL 支持,只需在 BConnection 之上添加一个BSSLConnection对象即可。
虽然大部分框架都有很好的文档,但我还没有提供任何关于如何使用它的指南。您可以使用这个基本程序作为起点。虽然不适合学习,但tun2socks程序,尤其是随附的较小的 udpgw 程序可能很有用。
由于您提到了 SOCKS,在我的框架中,我还实现了一个非常简单的 SOCKS5 客户端(无身份验证等),由 tun2socks 使用。
我可以提出一个我为网络游戏编写的 C 库。该库旨在用于大容量同时短 TCP 连接。它使用异步 epoll、kqueues、IOCP 或同步线程。该接口非常简单,并以 node.js 的工作方式通过回调进行抽象。作为一个回显服务器,它每秒可以处理 60k 个请求。见https://github.com/freedib/gasio