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

视频网站建站费用设计专业网站公司

视频网站建站费用,设计专业网站公司,网站代理做反向,网站一个月IO多路复用通常用于处理单进程高并发#xff0c;在Linux中#xff0c;一切皆文件#xff0c;一个socket连接会对应一个文件描述符#xff0c;在监听多个文件描述符的状态应用中epoll相对于select和poll效率更高 epoll本质是系统在内核维护了一颗红黑树#xff0c;监听的文…IO多路复用通常用于处理单进程高并发在Linux中一切皆文件一个socket连接会对应一个文件描述符在监听多个文件描述符的状态应用中epoll相对于select和poll效率更高 epoll本质是系统在内核维护了一颗红黑树监听的文件描述符会作为新的节点插入红黑树epoll会等待有状态变化的节点记录在链表里然后拷贝到用户所给的数组里面返回出来 以下是一个独立的服务端代码可以补充业务代码进行具体使用 sever.h // // Created by YEZI on 2024/5/24. //#ifndef SEVER_H #define SEVER_H #include iostream #include cstdlib #include unistd.h #include sys/epoll.h #include sys/socket.h #include netinet/in.h #include arpa/inet.h #include sstream #define MAX_EVENTS 8 #define PORT 8888 #define BUFFER_SIZE 512 #define BACKLOG_SIZE 16 // 请求队列最大长度class Sever { private:uint16_t port;int server_fd -1;int epoll_fd -1;sockaddr_in server_addr{}, client_addr{};socklen_t client_addr_len sizeof(client_addr);epoll_event event{}, events[MAX_EVENTS]{};public:explicit Sever(uint16_t port PORT): port(port) {// 创建套接字// AF_INET : 表示使用 IPv4 地址 可选参数// SOCK_STREAM 表示使用面向连接的数据传输方式// IPPROTO_TCP 表示使用 TCP 协议server_fd socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (server_fd -1) {std::cerr Failed to create socket\n;exit(EXIT_FAILURE);}// 设置服务器地址server_addr.sin_family AF_INET; // IPv4server_addr.sin_addr.s_addr INADDR_ANY; // INADDR_ANY0.0.0.0 表示本机所有IP地址server_addr.sin_port htons(PORT);// 绑定套接字if (bind(server_fd, (sockaddr *) server_addr, sizeof(server_addr)) -1) {std::cerr Failed to bind socket\n;exit(EXIT_FAILURE);}// 监听套接字if (listen(server_fd, BACKLOG_SIZE) -1) {std::cerr Failed to listen on socket\n;exit(EXIT_FAILURE);}// 创建 epoll 实例epoll_fd epoll_create1(0); // flag设置为0同epoll_create()if (epoll_fd -1) {std::cerr Failed to create epoll instance\n;exit(EXIT_FAILURE);}// 将服务器套接字添加到 epoll 实例中event.events EPOLLIN | EPOLLET; // 监听事件类型 EPOLLIN表示有数据可读 EPOLLET表示边缘触发仅在状态变化时通知event.data.fd server_fd;if (epoll_ctl(epoll_fd, EPOLL_CTL_ADD, server_fd, event) -1) {std::cerr Failed to add server socket to epoll\n;exit(EXIT_FAILURE);}std::cout Server started. Listening on port PORT ...\n;}void run() {while (true) {// 使用 epoll 等待事件 参数timeout为等待时间-1等死int num_ready epoll_wait(epoll_fd, events, MAX_EVENTS, -1);if (num_ready -1) {std::cerr Error in epoll_wait\n;exit(EXIT_FAILURE);}for (int i 0; i num_ready; i) {if (events[i].data.fd server_fd) {// 有新的连接请求int client_fd accept(server_fd, (sockaddr *) client_addr, client_addr_len);if (client_fd -1) {std::cerr Failed to accept client connection\n;continue;}std::cout New connection from inet_ntoa(client_addr.sin_addr) : ntohs(client_addr.sin_port) std::endl;// 将新的客户端套接字添加到 epoll 实例中event.events EPOLLIN | EPOLLET;event.data.fd client_fd;if (epoll_ctl(epoll_fd, EPOLL_CTL_ADD, client_fd, event) -1) {std::cerr Failed to add client socket to epoll\n;exit(EXIT_FAILURE);}} else {// 有数据到达现有客户端套接字char buffer[BUFFER_SIZE]{};ssize_t bytes_received recv(events[i].data.fd, buffer, BUFFER_SIZE, 0);if (bytes_received 0) {if (bytes_received 0) {// 客户端关闭连接std::cout Client disconnected\n;} else {std::cerr Error in recv\n;}// 关闭客户端套接字并从 epoll 实例中移除close(events[i].data.fd);epoll_ctl(epoll_fd, EPOLL_CTL_DEL, events[i].data.fd, nullptr);} else {// 接收到数据原样发送回客户端此处为业务代码补充处send(events[i].data.fd, buffer, bytes_received, 0);std::istringstream iss(buffer);std::string data;while (iss data) {std::cout data ;}std::coutstd::endl;}}}}}~Sever() {// 关闭服务器套接字和 epoll 实例close(server_fd);close(epoll_fd);} }; #endif //SEVER_Hmain.cpp #includesever.h int main() {Sever sever;sever.run(); }简单测试服务端打开Linux终端用一下命令连接服务器后即可传输数据 telnet localhost 8888
http://www.w-s-a.com/news/272152/

相关文章:

  • 做网站创意杭州家具网站建设方案
  • 福州seo网站推广优化乐清建网站
  • 莆田cms建站模板简述网站设计流程
  • 班级网站建设组织机构建设注册中心网站首页
  • 即墨网站建设地址怎么在文档中做网站一点就开
  • 做网站联系方式互联网行业分析
  • 杭州网站建设索q479185700高淳网站建设
  • 有什么做任务拿钱的网站精准的搜索引擎优化
  • 洛阳有建社网站的吗电力建设工程质量监督总网站
  • 网站404报错热水器网站建设 中企动力
  • 网站降权恢复淘宝 网站建设
  • 安州区建设局网站台州优秀关键词优化
  • 网站假设教程湖南微信管理系统
  • 网站备案属于公司哪一块哪个网站是专门做封面素材
  • 广州个人做网站内江建设局网站
  • 网站开发 360百科大连哪里有手机自适应网站建设维护
  • 如何查网站pv网站功防教程
  • 建设银行网站信息补充营销推广的作用
  • 网站见建设seo外链自动群发工具
  • 在境外做网站网站团购网站seo
  • 进网站后台加什么360推广 网站建设
  • 网站备案号码专做网站漏扫的工具
  • 罗店网站建设wordpress响应式
  • 网站怎么制作小程序wordpress实时获取qq资料
  • 网站的流量怎么赚钱经销做网站都有什么好处
  • 如何做好网站首页企术建站
  • 杭州网站建设咨询蓝韵网络聊城有制作网站的吗
  • 网站开发注意的事项深圳企业网站
  • 哈尔滨网站制作哪里专业网站建设维护有哪些内容
  • 花的网站建设规划书网络营销培训