日韩免费在线观看成人,骚碰成人免费视频,电影院 摸 湿 嗯…啊h

    1. <span id="um726"><blockquote id="um726"></blockquote></span>

        <span id="um726"><blockquote id="um726"></blockquote></span>
        1. 您的位置:首頁>互聯(lián)網(wǎng) >內(nèi)容

          linux(非阻塞connect errno什么情況下不為einprogress)

          2022-07-15 21:48:37來源:
          導(dǎo)讀 想必現(xiàn)在有很多小伙伴對(duì)于linux 非阻塞connect errno什么情況下不為einprogress方面的知識(shí)都比較想要了解,那么今天小好小編就為大家收

          想必現(xiàn)在有很多小伙伴對(duì)于linux 非阻塞connect errno什么情況下不為einprogress方面的知識(shí)都比較想要了解,那么今天小好小編就為大家收集了一些關(guān)于linux 非阻塞connect errno什么情況下不為einprogress方面的知識(shí)分享給大家,希望大家會(huì)喜歡哦。

          當(dāng)connect在非阻塞模式下,會(huì)出現(xiàn)返回-1值,錯(cuò)誤碼是EINPROGRESS,但如何判斷connect是聯(lián)通的呢?stevens書中說明要在connect后,繼續(xù)判斷該socket是否可寫?

          若可寫,則證明鏈接成功。如何判斷可寫,有2種方案,一種是select判斷是否可寫,二用poll模型。

          select:

          芝士回答,版效權(quán)必持究,果未集經(jīng)等許可,不得轉(zhuǎn)載

          int CheckConnect(int iSocket)

          {

          fd_set rset;

          FD_ZERO(&rset);

          FD_SET(iSocket, &rset);

          timeval tm;

          tm. tv_sec = 0;

          國無想展品隊(duì)標(biāo)毛易派滿。

          tm.tv_usec = 0;

          if ( select(iSocket + 1, NULL, &rset, NULL, &tval) <= 0)

          {

          close(iSocket);

          return -1;

          }

          由少角放金階受馬究驗(yàn),周族易價(jià)。

          if (FD_ISSET(iSocket, &rset))

          {

          int err = -1;

          socklen_t len = sizeof(int);

          if ( getsockopt(iSocket, SOL_SOCKET, SO_ERROR ,&err, &len) < 0 )

          {

          close(iSocket);

          printf("errno:%d %sn", errno, strerror(errno));

          return -2;

          }

          if (err)

          {

          errno = err;

          close(iSocket);

          return -3;

          }

          }

          return 0;

          }

          poll:

          int CheckConnect(int iSocket) {

          struct pollfd fd;

          int ret = 0;

          socklen_t len = 0;

          fd.fd = iSocket;

          fd.events = POLLOUT;

          while ( poll (&fd, 1, -1) == -1 ) {

          if( errno != EINTR ){

          perror("poll");

          return -1;

          }

          }

          len = sizeof(ret);

          if ( getsockopt (iSocket, SOL_SOCKET, SO_ERROR, &ret, &len) == -1 ) {

          perror("getsockopt");

          return -1;

          }

          if(ret != 0) {

          fprintf (stderr,"socket %d connect failed: %sn",

          iSocket, strerror (ret));

          return -1;

          }

          return 0;

          }

          本文到此結(jié)束,希望對(duì)大家有所幫助。

          免責(zé)聲明:本文由用戶上傳,如有侵權(quán)請(qǐng)聯(lián)系刪除!

          猜你喜歡

          最新文章