是否有任何 C 包装器或库可用于对原始套接字(fd
、选择、...)进行操作?没有火箭科学,只是一个可读的、漂亮的包装FD_SET
等等。
boost::asio用于 C++,所以在这里没用。
我知道Beej 的网络编程指南以及如何对套接字进行操作,我在自己开始包装之前会寻找包装器
有关的
是否有任何 C 包装器或库可用于对原始套接字(fd
、选择、...)进行操作?没有火箭科学,只是一个可读的、漂亮的包装FD_SET
等等。
boost::asio用于 C++,所以在这里没用。
我知道Beej 的网络编程指南以及如何对套接字进行操作,我在自己开始包装之前会寻找包装器
有关的
看看libdnet。详情: http: //libdnet.sourceforge.net/
您可能想看看 Dan Kegel(c10k 人)的 rn:http: //www.kegel.com/rn/。它具有围绕多个类似 select 的系统调用(如 poll/epoll/sigio)的普通-old-c 接口。在高 fd 计数时它们之间存在显着的性能差异,并且最好的接口(epoll/kqueue)是不可移植的。
rn api 是 epoll 式的:您只需添加/删除单个 fd,而不是像 select 那样传递整个列表。带有 FD_SET 的良好旧选择在编译时被限制为多个套接字,并在每次调用时将整个列表从用户空间复制到内核空间。使用 epoll,您有单独的系统调用来添加/删除单个 FD,即使您在等待 100K 空闲套接字时也很快。
所有现代 linux 系统都应该支持 epoll。如果您不关心可移植性,您可以直接使用它。