一个跨平台事件网络库,支持epoll/iocp ipv4/ipv6。化繁为简,极度精简其接口。和著名的ASIO保持一样的Proactor设计风格,优雅大气,揣摩chriskohlhoff大师的设计理念。
测试通过:vs2019 & CentOS7
#include "Network.h" using namespace net; #define BUFFLEN 1024 class Connect : public IoSocket { protected: virtual void onConnect(int err) {} virtual void onWrite(int bytes, int err) {} virtual void onRead(int bytes, int err){ if (bytes <= 0 || err) { return; } printf("recv msg: %s\n", readbuff); postRead(); } public: void postRead(){ //Request to read data IoSocket::read(readbuff, BUFFLEN); } private: char readbuff[BUFFLEN]; }; class IServer : public Accept { public: virtual void onAccept(IoSockptr& sptr, int err) { if (err){ accept(sptr); } else { ((Connect*)sptr.get())->postRead(); accept(std::make_shared<Connect>()); } } }; int main() { NetLoop loop; loop.init(); IServer accept; accept.listen(&loop, "127.0.0.1", 6601); accept.accept(std::make_shared<Connect>()); while (1) { loop.run(5); } return 0; }
更多项目:jwEngine