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

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

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

    對(duì)于客戶端而言,要與服務(wù)器進(jìn)行通信,需要向服務(wù)器發(fā)出連接請(qǐng)求。connect()函數(shù)用于完成這項(xiàng)功能,其原型如下:

    int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);


    connect()函數(shù)將使用參數(shù)sockfd中的套接字連接到參數(shù)serv_addr中指定的服務(wù)器。參數(shù)addrlen為serv_addr指向的內(nèi)存空間大小。

    如果參數(shù)sockfd的類型為SOCK_DGRAM, serv_addr參數(shù)為數(shù)據(jù)報(bào)發(fā)往的地址,且將只接收該地址的數(shù)據(jù)報(bào)。如果sockfd的類型為SOCK_STREAM或SOCK_SEQPACKET,調(diào)用該函數(shù)將連接serv_addr中的服務(wù)器地址。 

connect()函數(shù)常見的錯(cuò)誤信息:

    ? EACCES, EPERM:用戶試圖在套接字廣播標(biāo)志沒有設(shè)置的情況下連接廣播地址,或由于防火墻策略導(dǎo)致連接失敗。 

    ? EADDRINUSE:本地地址處于使用狀態(tài)。

    ? EAFNOSUPPORT:參數(shù)serv_add中的地址非合法地址。

    ? EAGAIN:沒有足夠空閑的本地端口。

    ? EALREADY:套接字為非阻塞套接字,并且原來(lái)的連接請(qǐng)求還未完成。

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

    ? ECONNREFUSED:遠(yuǎn)程地址并沒有處于監(jiān)聽狀態(tài)。 

    ? EFAULT:指向套接字結(jié)構(gòu)體的地址非法。

    ? EINPROGRESS:套接字為非阻塞套接字,且連接請(qǐng)求沒有立即完成。 

    ? EINTR:系統(tǒng)調(diào)用的執(zhí)行由于捕獲中斷而中止。

    ? EISCONN:已經(jīng)連接到該套接字。

    ? ENETUNREACH:網(wǎng)絡(luò)不可到達(dá)。

    ? ENOTSOCK:文件描述符不與套接字相關(guān)。

    ? ETIMEDOUT:連接超時(shí)。

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

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