当前位置: 首页 > news >正文

河南天元建设公司网站使网站有流量

河南天元建设公司网站,使网站有流量,四海网络网站建设建站,wordpress月会员此项目是根据sylar框架实现#xff0c;是从零开始重写sylar#xff0c;也是对sylar丰富与完善 项目地址#xff1a;https://gitee.com/lzhiqiang1999/server-framework 简介 项目介绍#xff1a;实现了一个基于协程的服务器框架#xff0c;支持多线程、多协程协同调度是从零开始重写sylar也是对sylar丰富与完善 项目地址https://gitee.com/lzhiqiang1999/server-framework 简介 项目介绍实现了一个基于协程的服务器框架支持多线程、多协程协同调度支持以异步处理的方式提高服务器性能封装了网络相关的模块包括socket、http、servlet等支持快速搭建HTTP服务器或WebSokcet服务器。 详细内容日志模块使用宏实现流式输出支持同步日志与异步日志、自定义日志格式、日志级别、多日志分离等功能。线程模块封装pthread相关方法封装常用的锁包括信号量读写锁自旋锁等。IO协程调度模块基于ucontext_t实现非对称协程模型以线程池的方式实现多线程多协程协同调度同时依赖epoll实现了事件监听机制。定时器模块使用最小堆管理定时器配合IO协程调度模块可以完成基于协程的定时任务调度。hook模块将同步的系统调用封装成异步操作accept, recv, send等配合IO协程调度能够极大的提升服务器性能。Http模块封装了sokcet常用方法支持http协议解析客户端实现连接池发送请求服务器端实现servlet模式处理客户端请求支持单Reator多线程多Reator多线程模式的服务器。 Socket模块 1. 主要功能 对Linux下socket相关方法的封装包括bind、listen、connect、read/write系列等方法。支持快速创建TCP、UDP对应的Socket。 2. 功能演示 模拟一个请求百度的客户端并打印出响应 IPAddress::ptr addr Address::LookupAnyIPAddress(www.baidu.com:80); // 创建socket Socket::ptr socket Socket::CreateTCP(addr); // 连接 socket-connect(addr); //发送数据 const char buf[] GET / HTTP/1.1\r\n\r\n; int rt socket-send(buf, sizeof(buf)); if(rt 0) {LOG_INFO(g_logger) send fail;return; }//接收数据 std::string buffers; buffers.resize(4096); rt socket-recv(buffers[0], 4096); if(rt 0) {LOG_INFO(g_logger) recv fail;return; }LOG_INFO(g_logger) buffers;3. 模块介绍 3.1 Socket 对socket相关方法的封装包括以下内容 创建各种类型的套接字对象的方法TCP套接字UDP套接字Unix域套接字设置套接字选项比如超时参数bind/connect/listen方法实现绑定地址、发起连接、发起监听功能accept方法返回连入的套接字对象发送、接收数据的方法获取本地地址、远端地址的方法获取套接字类型、地址类型、协议类型的方法取消套接字读、写的方法 class Socket : public std::enable_shared_from_thisSocket, Noncopyable{public:typedef std::shared_ptrSocket ptr;typedef std::weak_ptrSocket weak_ptr;// 创建TCP Socket(满足地址类型)static Socket::ptr CreateTCP(johnsonli::Address::ptr address);// 创建UDP Socket(满足地址类型)static Socket::ptr CreateUDP(johnsonli::Address::ptr address);// 创建IPv4的TCP Socketstatic Socket::ptr CreateTCPSocket();// 创建IPv4的UDP Socketstatic Socket::ptr CreateUDPSocket();// 创建IPv6的TCP Socketstatic Socket::ptr CreateTCPSocket6();// 创建IPv6的UDP Socketstatic Socket::ptr CreateUDPSocket6();Socket(int family, int type, int protocol 0);virtual ~Socket();int64_t getSendTimeout(); // 获取发送超时时间(毫秒)void setSendTimeout(int64_t v); // 设置发送超时时间(毫秒)int64_t getRecvTimeout(); // 获取接受超时时间(毫秒)void setRecvTimeout(int64_t v); // 设置接受超时时间(毫秒)// 获取sockopt see getsockoptbool getOption(int level, int option, void* result, socklen_t* len);// 获取sockopt模板 see getsockopttemplateclass Tbool getOption(int level, int option, T result) {socklen_t length sizeof(T);return getOption(level, option, result, length);}// 设置sockopt see setsockoptbool setOption(int level, int option, const void* result, socklen_t len);// 设置sockopt模板 see setsockopttemplateclass Tbool setOption(int level, int option, const T value) {return setOption(level, option, value, sizeof(T));}/*** brief 接收connect链接* return 成功返回新连接的socket,失败返回nullptr* pre Socket必须 bind , listen 成功*/virtual Socket::ptr accept();/*** brief 绑定地址* param[in] addr 地址* return 是否绑定成功*/virtual bool bind(const Address::ptr addr);/*** brief 连接地址* param[in] addr 目标地址* param[in] timeout_ms 超时时间(毫秒)*/virtual bool connect(const Address::ptr addr, uint64_t timeout_ms -1);virtual bool reconnect(uint64_t timeout_ms -1);/*** brief 监听socket* param[in] backlog 未完成连接队列的最大长度* result 返回监听是否成功* pre 必须先 bind 成功*/virtual bool listen(int backlog SOMAXCONN);/*** brief 关闭socket*/virtual bool close();/*** brief 发送数据* param[in] buffer 待发送数据的内存* param[in] length 待发送数据的长度* param[in] flags 标志字* return* retval 0 发送成功对应大小的数据* retval 0 socket被关闭* retval 0 socket出错*/virtual int send(const void* buffer, size_t length, int flags 0);/*** brief 发送数据* param[in] buffers 待发送数据的内存(iovec数组)* param[in] length 待发送数据的长度(iovec长度)* param[in] flags 标志字* return* retval 0 发送成功对应大小的数据* retval 0 socket被关闭* retval 0 socket出错*/virtual int send(const iovec* buffers, size_t length, int flags 0);/*** brief 发送数据* param[in] buffer 待发送数据的内存* param[in] length 待发送数据的长度* param[in] to 发送的目标地址* param[in] flags 标志字* return* retval 0 发送成功对应大小的数据* retval 0 socket被关闭* retval 0 socket出错*/virtual int sendTo(const void* buffer, size_t length, const Address::ptr to, int flags 0);/*** brief 发送数据* param[in] buffers 待发送数据的内存(iovec数组)* param[in] length 待发送数据的长度(iovec长度)* param[in] to 发送的目标地址* param[in] flags 标志字* return* retval 0 发送成功对应大小的数据* retval 0 socket被关闭* retval 0 socket出错*/virtual int sendTo(const iovec* buffers, size_t length, const Address::ptr to, int flags 0);/*** brief 接受数据* param[out] buffer 接收数据的内存* param[in] length 接收数据的内存大小* param[in] flags 标志字* return* retval 0 接收到对应大小的数据* retval 0 socket被关闭* retval 0 socket出错*/virtual int recv(void* buffer, size_t length, int flags 0);/*** brief 接受数据* param[out] buffers 接收数据的内存(iovec数组)* param[in] length 接收数据的内存大小(iovec数组长度)* param[in] flags 标志字* return* retval 0 接收到对应大小的数据* retval 0 socket被关闭* retval 0 socket出错*/virtual int recv(iovec* buffers, size_t length, int flags 0);/*** brief 接受数据* param[out] buffer 接收数据的内存* param[in] length 接收数据的内存大小* param[out] from 发送端地址* param[in] flags 标志字* return* retval 0 接收到对应大小的数据* retval 0 socket被关闭* retval 0 socket出错*/virtual int recvFrom(void* buffer, size_t length, Address::ptr from, int flags 0);/*** brief 接受数据* param[out] buffers 接收数据的内存(iovec数组)* param[in] length 接收数据的内存大小(iovec数组长度)* param[out] from 发送端地址* param[in] flags 标志字* return* retval 0 接收到对应大小的数据* retval 0 socket被关闭* retval 0 socket出错*/virtual int recvFrom(iovec* buffers, size_t length, Address::ptr from, int flags 0);// 输出信息到流中virtual std::ostream dump(std::ostream os) const;virtual std::string toString() const;bool cancelRead(); // 取消读bool cancelWrite(); // 取消写 bool cancelAccept(); // 取消acceptbool cancelAll(); // 取消所有事件protected:void initSock(); // 设置socket属性void newSock(); // 创建socket m_sockfd socket()virtual bool init(int sock); // 初始化sock调用initSockprotected: int m_sockfd; /// socket句柄 int m_family; /// 协议簇 int m_type; /// 类型 int m_protocol; /// 协议 bool m_isConnected; /// 是否连接 Address::ptr m_localAddress; /// 本地地址 Address::ptr m_remoteAddress; /// 远端地址};// 流式输出socketstd::ostream operator(std::ostream os, const Socket sock); }
http://www.ho-use.cn/article/10818322.html

相关文章:

  • 网站的标题优化怎么做烟台企业做网站
  • 请问哪个网站可以做当地向导孝感市建设网站
  • 企业静态网站需要备案吗wordpress体验
  • 丽江网站建设 莱芜html 公司网站 代码下载
  • 开封网站建设优化网站怎么做才能被百度抓取到
  • 温州市网站建设wordpress插件+手机版
  • 做网站规划wordpress精美博客主题
  • wordpress 手机lianxu播放seo引擎优化是什么
  • 泰州营销型网站万能图片编辑器
  • 建立网站的主要流程有哪些步骤wordpress百度地图插件下载失败
  • 深圳做微信商城网站建设暴雪倒闭
  • 深网站建设网站推广方法主要有
  • 学院门户网站建设自评影响网站pr的主要因素有哪些
  • 百度推广自己做网站吗网站建设要做哪些工作室
  • dede网站如何做中英文版本wordpress 一键置顶
  • 银川微信网站php网站开发技术
  • wordpress外贸建站公司seo服务平台选择
  • 海外推广有前途吗温州网站优化案例
  • 网站托管内容手机网站和电脑网站的区别
  • 网站是怎样赚钱的成都asp网站建设
  • 网站建设岗位能力评估表随便来一个公司邮箱
  • 找人做企业网站 注意什么wordpress设置阅读更多
  • 昆山规模的网站建设公司有哪些安贞网站建设
  • 西安市阎良区建设局网站软件开发平台下载
  • 网站开发免费课程html5 wordpress
  • 网站诊断与检测360可以做网站
  • 企业网站的建设目的有哪些格泰网站建设
  • 网站seo优化要怎么做广州做网站推广公司
  • 南宁建站软件视频制作素材免费网站
  • 外贸soho怎么建网站从零开始做网站seo