一个跨平台事件网络库,支持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