开发socket程序,可选择的类库是非常多的。
libcurl:处理http、ftp、pop3、smtp、telnet、tftp等协议可以用,很全。
windows SDK:网上资料很多,不再多说。
MFC CSocket 和CAsyncSocket:本文主要介绍CAsyncSocket异步编程的用法。同步通讯见本人其他文章。
ACE:它过于宏大,一堆的设计模式,架构是一层又一层,对初学者来说,非常困难。不推荐使用。而且由于代码结构过于复杂,后期维护也非常困难。在本人开发与维护的一个项目中,由于使用ace的messageBlock,还出现过一个非常严重的问题,导致最后某个通讯子系统代码不得不重构,并完全抛弃了ACE。这里不再详述。
Boost asio:在后续文章中,也会介绍boost asio的编程原理及用法。asio是基本Boost开发的异步IO库,大大简化基于socket程序的开发。本人极力推荐。
libevent:
POCO:
个人使用时,可以在这些库的基础上,按照自己的需要进行再封装。