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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实例说明listen()函数第二个参数的意义与用法

發布時間:2025/3/21 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实例说明listen()函数第二个参数的意义与用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們先來看結果:

Client:

[cpp] view plain copy
  • #include?<sys/socket.h>??
  • #include?<stdio.h>??
  • #include?<string.h>??
  • #include?<netinet/in.h>??
  • #include?<stdlib.h>??
  • #include?<arpa/inet.h>??
  • ??
  • int?main(int?argc,char**?argv)??
  • {??
  • ????int?ret;??
  • ????int?sockfd?=?socket(AF_INET,SOCK_STREAM,0);??
  • ????if?(sockfd?==?-1)??
  • ????{??
  • ????????printf("socket?error\n");??
  • ????????return?-1;??
  • ????}??
  • ??
  • ????struct?sockaddr_in?serveraddr;??
  • ????memset(&serveraddr,0,sizeof(serveraddr));??
  • ????serveraddr.sin_family?=?AF_INET;??
  • ????inet_aton(argv[1],&serveraddr.sin_addr);??
  • ????serveraddr.sin_port?=?htons((unsigned?short)(atoi(argv[2])));??
  • ??????
  • ????ret?=?connect(sockfd,(const?sockaddr*)&serveraddr,sizeof(serveraddr));??
  • ????if?(ret?==?-1)??
  • ????{??
  • ????????printf("connect?error,ret?=?%d\n",ret);??
  • ????????return?-1;??
  • ????}??
  • ????
  • ????for(;;)??
  • ????{}??
  • ????return?0;??
  • }??

  • Server: [cpp] view plain copy
  • #include?<sys/socket.h>??
  • #include?<stdio.h>??
  • #include?<string.h>??
  • #include?<netinet/in.h>??
  • #include?<stdlib.h>??
  • #include?<arpa/inet.h>??
  • ??
  • ??
  • int?main(int?argc,char**?argv)??
  • {??
  • ????int?ret;??
  • ????int?listenfd?=?socket(AF_INET,SOCK_STREAM,0);??
  • ????if?(listenfd?==?-1)??
  • ????{??
  • ????????printf("socket?error\n");??
  • ????????return?-1;??
  • ????}??
  • ??
  • ????struct?sockaddr_in?serveraddr;??
  • ????memset(&serveraddr,0,sizeof(serveraddr));??
  • ????serveraddr.sin_family?=?AF_INET;??
  • ????serveraddr.sin_addr.s_addr?=?htonl(INADDR_ANY);??
  • ????serveraddr.sin_port?=?htons((unsigned?short)(atoi(argv[1])));??
  • ??
  • ????ret?=?bind(listenfd,(const?sockaddr*)&serveraddr,sizeof(serveraddr));??
  • ????if?(ret?==?-1)??
  • ????{??
  • ????????printf("bind?error,ret?=?%d\n",ret);??
  • ????????return?-1;??
  • ????}??
  • ??
  • ??<span?style="WHITE-SPACE:?pre">?</span>int?backlog?=?atoi(argv[2]);??
  • ????ret?=?listen(listenfd,?backlog);??
  • ????printf("backlog?=?%d,ret?=%d\n",backlog,ret);??
  • ????if?(ret?==?-1)??
  • ????{??
  • ????????printf("listen?error,ret?=?%d\n",ret);??
  • ????????return?-1;??
  • ????}??
  • ??????
  • ????for(;;)??
  • ????{}??
  • ????return?0;??
  • }??
  • server的代碼中通過命令行的方式傳入backlog的值,以便于我們通過修改backlog來觀察不同的backlog對程序的影響.

    開啟一個server與3個client.

    backlog = 1時:



    backlog = 2時:

    觀察上圖,server在19890端口監聽,3個client發起TCP連接。在第一幅圖中,對client而言,3個狀態均為established.對server而言,2個連接狀態為established,一個為syn_recv.第二幅圖中,對server而言,3個鏈接的狀態均為established。

    我們先來看一下TCP連接的狀態轉換



    再說回listen(int fd,int backlog)函數,內核會為一個監聽套接字維護兩個隊列,當有TCP請求到來時,即3次握手中的syn分節發送來時,會在未完成隊列中增加一項,3次握手完成時,未完成隊列中的項就移動到已完成隊列里,accept()函數會從已連接隊列里取走已完成連接.

    這個backlog參數就是控制我們的已連接隊列里等待accept()取走的連接的最大數目的.注意一點,backlog與這個已排隊連接的最大數目未必是完全相等的,不同的系統的實現可能不同.比如backlog=1,系統允許的實際一排隊數目可能為2.


    所以在上圖中,對client而言,connect()返回,TCP的狀態就轉變為established。而對server而言,3次握手完成TCP狀態才會轉換為established。在圖一中,由于backlog參數的限制,導致有一條連接并未完成3次握手,所以狀態為syn_recv。

    總結

    以上是生活随笔為你收集整理的实例说明listen()函数第二个参数的意义与用法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 午夜激情福利视频 | 亚洲美女久久久 | 欧美激情一区 | 免费看的黄色 | 欧美xxxⅹ性欧美大片 | 国产va亚洲va在线va | 人人干干| 国产任你操 | 粉嫩av国产一区二区三区 | 一区三区在线观看 | 欧美亚洲丝袜 | 国内激情视频 | 国产91精品一区二区 | 男人操女人下面 | 亚洲无色 | 日韩乱码人妻无码中文字幕久久 | 亚洲精品午夜 | 777片理伦片在线观看 | 三级黄色片网站 | 国产精品毛片 | 天天做天天操 | 香蕉视频污视频 | 日日爱夜夜操 | 香蕉久久夜色精品国产使用方法 | 一本一道久久a久久精品蜜桃 | 日韩精品人妻一区二区三区免费 | 粗喘呻吟撞击猛烈疯狂 | www.亚洲成人 | 波多野结衣视频在线看 | 我要操婊 | 国产毛片毛片 | 日本免费久久 | 在线黄色免费 | 国产影视av | 国产精品综合一区二区 | 国产a级黄色 | 免费看美女被靠到爽的视频 | 亚洲色图17p| 人人舔人人干 | 色乱码一区二区三区网站 | 精品久久五月天 | 亚洲欧洲成人在线 | 天天躁日日躁狠狠躁av麻豆男男 | 91啪在线观看 | 亚洲精品66 | 午夜精品久久久久久久久久蜜桃 | 一级黄色短视频 | 蜜臀一区 | 狠狠爱成人 | 久久99精品国产91久久来源 | 日韩色在线观看 | 一二三区av | wwww黄色片 | 97影院在线午夜 | 欧美日韩一区二区在线 | 国产精品成人免费精品自在线观看 | 九九热这里只有 | 在线看的免费网站 | 久久久精品中文字幕 | 欧美黑人添添高潮a片www | 欧美黄色一级视频 | 野花视频在线观看免费 | 狠狠干天天色 | 中文字幕成人在线 | 日本黄色网络 | 欧美精品在线免费 | 国产91色| 哪里可以免费看av | 欧美精品导航 | 水蜜桃av无码 | 日本三级小视频 | 无遮挡裸光屁屁打屁股男男 | 日韩综合一区二区 | 91视频在线免费看 | 老司机午夜精品 | 欧美在线视频观看 | 国产99久久九九精品无码免费 | 午夜视频在线观看视频 | 美女脱了裤子让男人桶 | 亚洲欧洲免费 | caopor超碰 | 丰满少妇在线观看资源站 | 69视频网址| 亚洲欧美一区二区三区四区五区 | 人妻内射一区二区在线视频 | 999久久久 | 中文字幕2区 | 成人精品福利视频 | 欧美日韩在线播放三区四区 | 欧美激情在线观看视频 | 熟妇人妻无乱码中文字幕真矢织江 | 欧美又黑又粗 | 欧美另类xxx | 亚洲永久无码精品 | 欧美人禽杂交狂配 | 无人在线观看高清视频 | 成人av网站在线播放 | 亚洲一区播放 | 精品少妇人妻av一区二区三区 |