位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > C語(yǔ)言 > 問(wèn)題詳情

C語(yǔ)言 accept()函數(shù)

提問(wèn)人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-03

    處于監(jiān)聽(tīng)狀態(tài)的服務(wù)器在獲得客戶端的連接請(qǐng)求后,會(huì)將其放置在等待隊(duì)列中。當(dāng)系統(tǒng)空閑時(shí),將接受客戶端的連接請(qǐng)求。接收客戶端的連接請(qǐng)求使用acceptO函數(shù),該函數(shù)原型如下:

    int bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen):

    accept()函數(shù)用于面向連接類型的套接字類型SOCK_STREAM和SOCK_SEQPACKET。 accept()函數(shù)將從連接請(qǐng)求隊(duì)列中獲得連接信息,創(chuàng)建新的套接字,并返回該套接字的文件描述符。新創(chuàng)建的套接字用于服務(wù)器與客戶機(jī)的通信,而原來(lái)的套接字仍然處于監(jiān)聽(tīng)狀態(tài)。

    accept()函數(shù)的sockfd參數(shù)為監(jiān)聽(tīng)的套接字描述符;addr參數(shù)為指向結(jié)構(gòu)體sockaddr的指針;參數(shù)addrlen為addr參數(shù)指向的內(nèi)存空間的長(zhǎng)度。 

accept()函數(shù)常見(jiàn)的錯(cuò)誤信息:

    ? EAGAIN:套接字處于非阻塞狀態(tài),當(dāng)前沒(méi)有連接請(qǐng)求。

    ? EBADF:非法的文件描述符。

    ? ECONNABORTED:連接中斷。

    ? EINTR:系統(tǒng)調(diào)用被信號(hào)中斷。

    ? EINVAL:套接字沒(méi)有處于監(jiān)聽(tīng)狀態(tài),或非法的addrlen參數(shù)。

    ? EMFILE:達(dá)到進(jìn)程打開(kāi)文件描述符限制。

    ? ENFILE: 達(dá)到打開(kāi)文件數(shù)限制。

    ? ENOTSOCK:文件描述符為文件的文件描述符。

    ? EOPNOTSUPP:套接字類型不是SOCK__STREAM0

繼續(xù)查找其他問(wèn)題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部