日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

C语言 socket listen()函数(socket()函数创建的socket(套接字描述符)默认是一个主动类型的,listen函数将socket变为被动类型的,等待客户的连接请求)

發(fā)布時(shí)間:2025/3/20 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言 socket listen()函数(socket()函数创建的socket(套接字描述符)默认是一个主动类型的,listen函数将socket变为被动类型的,等待客户的连接请求) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

摘要:listen函數(shù)使用主動(dòng)連接套接口變?yōu)楸贿B接套接口,使得一個(gè)進(jìn)程可以接受其它進(jìn)程的請(qǐng)求,從而成為一個(gè)服務(wù)器進(jìn)程。在TCP服務(wù)器編程中l(wèi)isten函數(shù)把進(jìn)程變?yōu)橐粋€(gè)服務(wù)器,并指定相應(yīng)的套接字變?yōu)楸粍?dòng)連接。

listen函數(shù)一般在調(diào)用bind之后-調(diào)用accept之前調(diào)用,它的函數(shù)原型是:

#include <sys/types.h> #include <sys/socket.h> int listen(int sockfd, int backlog)
  • 返回:0──成功, -1──失敗

  • 參數(shù)sockfd(創(chuàng)建socket返回的文件描述符)
    被listen函數(shù)作用的套接字,sockfd由之前的socket函數(shù)返回。在被socket函數(shù)返回的套接字fd之時(shí),它是一個(gè)主動(dòng)連接的套接字,也就是此時(shí)系統(tǒng)假設(shè)用戶會(huì)對(duì)這個(gè)套接字調(diào)用connect函數(shù),期待它主動(dòng)與其它進(jìn)程連接,然后在服務(wù)器編程中,用戶希望這個(gè)套接字可以接受外來(lái)的連接請(qǐng)求,也就是被動(dòng)等待用戶來(lái)連接。由于系統(tǒng)默認(rèn)時(shí)認(rèn)為一個(gè)套接字是主動(dòng)連接的,所以需要通過(guò)某種方式來(lái)告訴系統(tǒng),用戶進(jìn)程通過(guò)系統(tǒng)調(diào)用listen來(lái)完成這件事。

  • 參數(shù)backlog(建立好連接處于ESTABLISHED狀態(tài)的隊(duì)列的長(zhǎng)度,backlog的最大值128)
    這個(gè)參數(shù)涉及到一些網(wǎng)絡(luò)的細(xì)節(jié)。在進(jìn)程正理一個(gè)一個(gè)連接請(qǐng)求的時(shí)候,可能還存在其它的連接請(qǐng)求。因?yàn)門CP連接是一個(gè)過(guò)程,所以可能存在一種半連接的狀態(tài),有時(shí)由于同時(shí)嘗試連接的用戶過(guò)多,使得服務(wù)器進(jìn)程無(wú)法快速地完成連接請(qǐng)求。如果這個(gè)情況出現(xiàn)了,服務(wù)器進(jìn)程希望內(nèi)核如何處理呢?內(nèi)核會(huì)在自己的進(jìn)程空間里維護(hù)一個(gè)隊(duì)列以跟蹤這些完成的連接但服務(wù)器進(jìn)程還沒(méi)有接手處理或正在進(jìn)行的連接,這樣的一個(gè)隊(duì)列內(nèi)核不可能讓其任意大,所以必須有一個(gè)大小的上限。這個(gè)backlog告訴內(nèi)核使用這個(gè)數(shù)值作為上限。
    毫無(wú)疑問(wèn),服務(wù)器進(jìn)程不能隨便指定一個(gè)數(shù)值,內(nèi)核有一個(gè)許可的范圍。這個(gè)范圍是實(shí)現(xiàn)相關(guān)的。很難有某種統(tǒng)一,一般這個(gè)值會(huì)在30以內(nèi)。

當(dāng)調(diào)用listen之后,服務(wù)器進(jìn)程就可以調(diào)用accept來(lái)接受一個(gè)外來(lái)的請(qǐng)求。

參考文章1:網(wǎng)絡(luò)編程socket之listen函數(shù)

參考文章2:socket通信之listen函數(shù)

總結(jié)

以上是生活随笔為你收集整理的C语言 socket listen()函数(socket()函数创建的socket(套接字描述符)默认是一个主动类型的,listen函数将socket变为被动类型的,等待客户的连接请求)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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