Linux 中連線逾時的另外一種實現

來源:互聯網
上載者:User

標籤:style   color   ar   使用   sp   on   amp   ad   bs   

我之前的實現方式都是使用非阻塞的socket  , 其實對於阻塞的socket 有另外一種實現方式,那就是使用 alarm(鬧鐘)  , 進入串連前設定設定個逾時

voidset_timeout(int n){to = 0;alarm(n);signal(SIGALRM, timeout);}

然後進入串連,

y = connect(sock, (struct sockaddr *) &cli, sizeof(cli));

如果逾時了,進程就會收到 SIGALRM 訊號,程式的流程走到 SIGALRM 的訊號處理函數 timeout 中

voidtimeout(int n){to = 1;alarm(0);}

此時 connect 函數會被訊號打斷退出  此時判斷下 to 變數 就知道是不是逾時了 

if (to) {printe("connect: Timed out\n");continue;}



Linux 中連線逾時的另外一種實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.