日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux网络编程——tcp并发服务器(poll实现)

發(fā)布時間:2023/11/30 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux网络编程——tcp并发服务器(poll实现) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

https://blog.csdn.net/lianghe_work/article/details/46535859

想詳細徹底地了解poll或看懂下面的代碼請參考《Linux網(wǎng)絡(luò)編程——I/O復(fù)用之poll函數(shù)》

代碼:

  • #include <string.h>
  • #include <stdio.h>
  • #include <stdlib.h>
  • #include <unistd.h>
  • #include <sys/select.h>
  • #include <sys/time.h>
  • #include <sys/socket.h>
  • #include <netinet/in.h>
  • #include <arpa/inet.h>
  • #include <poll.h>
  • #include <errno.h>
  • #define OPEN_MAX 100
  • int main(int argc, char *argv[])
  • {
  • //1.創(chuàng)建tcp監(jiān)聽套接字
  • int sockfd = socket(AF_INET, SOCK_STREAM, 0);
  • //2.綁定sockfd
  • struct sockaddr_in my_addr;
  • bzero(&my_addr, sizeof(my_addr));
  • my_addr.sin_family = AF_INET;
  • my_addr.sin_port = htons(8000);
  • my_addr.sin_addr.s_addr = htonl(INADDR_ANY);
  • bind(sockfd, (struct sockaddr *)&my_addr, sizeof(my_addr));
  • //3.監(jiān)聽listen
  • listen(sockfd, 10);
  • //4.poll相應(yīng)參數(shù)準備
  • struct pollfd client[OPEN_MAX];
  • int i = 0, maxi = 0;
  • for(;i<OPEN_MAX; i++)
  • client[i].fd = -1;//初始化poll結(jié)構(gòu)中的文件描述符fd
  • client[0].fd = sockfd;//需要監(jiān)測的描述符
  • client[0].events = POLLIN;//普通或優(yōu)先級帶數(shù)據(jù)可讀
  • //5.對已連接的客戶端的數(shù)據(jù)處理
  • while(1)
  • {
  • int ret = poll(client, maxi+1, -1);//對加入poll結(jié)構(gòu)體數(shù)組所有元素進行監(jiān)測
  • //5.1監(jiān)測sockfd(監(jiān)聽套接字)是否存在連接
  • if((client[0].revents & POLLIN) == POLLIN )
  • {
  • struct sockaddr_in cli_addr;
  • int clilen = sizeof(cli_addr);
  • int connfd = 0;
  • //5.1.1 從tcp完成連接中提取客戶端
  • connfd = accept(sockfd, (struct sockaddr *)&cli_addr, &clilen);
  • //5.1.2 將提取到的connfd放入poll結(jié)構(gòu)體數(shù)組中,以便于poll函數(shù)監(jiān)測
  • for(i=1; i<OPEN_MAX; i++)
  • {
  • if(client[i].fd < 0)
  • {
  • client[i].fd = connfd;
  • client[i].events = POLLIN;
  • break;
  • }
  • }
  • //5.1.3 maxi更新
  • if(i > maxi)
  • maxi = i;
  • //5.1.4 如果沒有就緒的描述符,就繼續(xù)poll監(jiān)測,否則繼續(xù)向下看
  • if(--ret <= 0)
  • continue;
  • }
  • //5.2繼續(xù)響應(yīng)就緒的描述符
  • for(i=1; i<=maxi; i++)
  • {
  • if(client[i].fd < 0)
  • continue;
  • if(client[i].revents & (POLLIN | POLLERR))
  • {
  • int len = 0;
  • char buf[128] = "";
  • //5.2.1接受客戶端數(shù)據(jù)
  • if((len = recv(client[i].fd, buf, sizeof(buf), 0)) < 0)
  • {
  • if(errno == ECONNRESET)//tcp連接超時、RST
  • {
  • close(client[i].fd);
  • client[i].fd = -1;
  • }
  • else
  • perror("read error:");
  • }
  • else if(len == 0)//客戶端關(guān)閉連接
  • {
  • close(client[i].fd);
  • client[i].fd = -1;
  • }
  • else//正常接收到服務(wù)器的數(shù)據(jù)
  • send(client[i].fd, buf, len, 0);
  • //5.2.2所有的就緒描述符處理完了,就退出當前的for循環(huán),繼續(xù)poll監(jiān)測
  • if(--ret <= 0)
  • break;
  • }
  • }
  • }
  • return 0;
  • }

  • 運行結(jié)果:

    總結(jié)

    以上是生活随笔為你收集整理的Linux网络编程——tcp并发服务器(poll实现)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 久久精品视频日本 | 中国亚洲老头同性gay男男… | 精品福利片| 男女日屁视频 | 国产亚洲精品电影 | 国产亚洲AV无码成人网站在线 | 精精国产xxxx视频在线播放 | 少妇高潮一区二区三区99欧美 | 成人免费毛片入口 | 日本阿v视频 | 亚洲精品少妇久久久久久 | 夜夜嗨av色一区二区不卡 | 久久艹在线 | 色综合狠狠 | 久久久久麻豆 | 七仙女欲春2一级裸体片 | 欧美日韩中文 | 欧洲精品久久久久毛片完整版 | 男女做网站| 欧美一区二区三区黄片 | 中文有码在线观看 | 国产视频一二三 | 爱爱小视频免费看 | 日本黄a三级三级三级 | 亚洲欧美视频在线播放 | 91麻豆成人精品国产免费网站 | 人妻在线一区 | 成人一二三四区 | 亚洲国产激情 | 人禽高h交 | 狠狠干在线视频 | 国产999精品久久久久久 | 蜜桃免费在线视频 | 超碰天天| 一区日韩 | 骚虎视频最新网址 | 欧美激情久久久久 | 俄罗斯美女一级爱片 | 成人手机在线播放 | 99国产精品99 | 国产美女黄色片 | 天天操天天操天天射 | 亚洲黄色av网站 | 激情www | 日本公妇乱淫免费视频一区三区 | 91在线网址 | 亚洲成人动漫在线观看 | 欧美伦理片网站 | 欧美日本精品 | 国产亚洲精品网站 | 开心综合网 | 日本免费在线观看 | 久久久久久久久福利 | 在线免费观看视频网站 | yjizz视频网 国产乱人对白 | 啪啪啪一区二区 | 黄色小视频网 | 人人狠狠综合久久亚洲 | 亚洲激情五月婷婷 | av观看国产 | 美女免费网站 | 久久久综合 | caopeng在线视频 | 亚洲午夜精品久久久 | 免费成年人视频在线观看 | 国产一级特黄a高潮片 | 日韩精品高清在线 | 日韩黄视频 | 在线看黄免费 | 秋霞久久精品 | 制服丝袜第一页在线观看 | 久久性生活 | 一区二区三区精彩视频 | 欧美一区二区免费 | 女人裸体又黄 | 人人妻人人澡人人爽精品日本 | 色综合综合| 偷拍亚洲欧美 | 国产美女永久免费无遮挡 | 青青草国产一区二区三区 | 欧美久久久久久久久久久久 | 午夜精品久久久久久久久久久久久 | 丁香激情五月少妇 | 亚洲成年人网站在线观看 | 国产视频精品一区二区三区 | 九一国产视频 | 日韩成人小视频 | 狠狠夜夜 | 大尺度在线观看 | 亚洲人成亚洲人成在线观看 | 亚洲麻豆视频 | 亚洲 美腿 欧美 偷拍 | 久久精品亚洲天堂 | 熟女精品一区二区三区 | 亚洲一本在线 | 中文字幕第一页亚洲 | 色吧婷婷 | 99久久久久久 | 色婷婷精品视频 |