go語言如何判斷tcp是否斷開?針對這個問題,這篇文章給出了相對應(yīng)的分析和解答,希望能幫助更多想解決這個問題的朋友找到更加簡單易行的辦法。
創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的海晏網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
keepalive檢測,對于設(shè)置了keepalive來說,當(dāng)tcp檢測到對端socket不再可用時(不能發(fā)出探測包,或探測包沒有收到ACK的響應(yīng)包),select會返回socket可讀,并且在recv時返回-1,同時置上errno為ETIMEDOUT。此時TCP的狀態(tài)是斷開的。
struct TCP_KEEPALIVE { unsigned long onoff; unsigned long keepalivetime; unsigned long keepaliveinterval; } ; #define SIO_KEEPALIVE_VALS _WSAIOW(IOC_VENDOR,4) /* KeepAlive實現(xiàn) */ void set_keepalive (SOCKET s) { BOOL bKeepAlive = TRUE; int nRet = ::setsockopt(s, SOL_SOCKET, SO_KEEPALIVE, (char*)&bKeepAlive, sizeof(bKeepAlive)); if (nRet == SOCKET_ERROR) { return ; } /* 輸入?yún)?shù) */ struct TCP_KEEPALIVE inKeepAlive = {0}; unsigned long ulInLen = sizeof(struct TCP_KEEPALIVE); /* 輸出參數(shù) */ struct TCP_KEEPALIVE outKeepAlive = {0}; unsigned long ulOutLen = sizeof(struct TCP_KEEPALIVE); unsigned long ulBytesReturn = 0; int ret = 0; /* 設(shè)置keepalive 為5秒,并且發(fā)送次數(shù)為3次 */ inKeepAlive.onoff = 1; /* 2次keepalive探測間隔時間 */ inKeepAlive.keepaliveinterval = 5000; /* 開始首次keepalive探測前的tcp空閑時間 */ inKeepAlive.keepalivetime = 5000; ret = WSAIoctl((unsigned int)s, SIO_KEEPALIVE_VALS, (LPVOID)&inKeepAlive, ulInLen, (LPVOID)&outKeepAlive, ulOutLen, &ulBytesReturn, NULL, NULL); if (ret == SOCKET_ERROR) { printf ("error: %d\n", WSAGetLastError()); } }
看完這篇文章,你們學(xué)會go語言判斷tcp是否斷開的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀。
新聞名稱:go語言如何判斷tcp是否斷開
本文來源:http://chinadenli.net/article42/ppjoec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、App設(shè)計、服務(wù)器托管、企業(yè)建站、搜索引擎優(yōu)化、網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)