同步操作将从 呵大官人/fooking 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#include <iostream>#include "Server.h"#include "Connection.h"#include "Log.h"NS_USING;Server::Server(EventLoop *loop, int fd):pLoop(loop),sSocket(fd){EV_CB_INIT(cbConnection);}Server::~Server(){}int Server::createTcpServer(int port){if(sSocket.create(AF_INET) == SOCKET_ERR){return -1;}//listenstruct sockaddr_in sa;memset(&sa, 0, sizeof(sa));sa.sin_family = AF_INET;sa.sin_port = htons(port);sa.sin_addr.s_addr = htonl(INADDR_ANY);if(sSocket.listen((sockaddr *)&sa, sizeof(sa)) == SOCKET_ERR){sSocket.close();return -1;}//set nonblocksSocket.setNonBlock();return 0;}int Server::createUnixServer(const char *path){#ifdef WIN32return -1;#elseif(sSocket.create(AF_LOCAL) == SOCKET_ERR){return -1;}//listenstruct sockaddr_un sa;memset(&sa, 0, sizeof(sa));sa.sun_family = AF_LOCAL;strncpy(sa.sun_path, path, sizeof(sa.sun_path) - 1);if(sSocket.listen((sockaddr*)&sa, sizeof(sa)) == SOCKET_ERR){sSocket.close();return -1;}//set nonblocksSocket.setNonBlock();return 0;#endif}void Server::start(){pLoop->addEventListener(sSocket.getFd(), EV_IO_READ, EV_IO_CB(this, Server::onConnection), NULL);}void Server::stop(){pLoop->removeEventListener(sSocket.getFd(), EV_IO_ALL);}void Server::onConnection(int fd, int ev, void *data){struct sockaddr_in sa;int len = sizeof(sa);int conn = sSocket.accept((sockaddr *)&sa, &len);if(conn == SOCKET_ERR){LOG_ERR("accept fail, errno=%d, error=%s", errno, strerror(errno));return ;}EV_INVOKE(cbConnection, conn, 0, &sa);}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。