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