首先,看一下TCP握手簡(jiǎn)單描繪過(guò)程:

為滁州等地區(qū)用戶(hù)提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及滁州網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、滁州網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶(hù)提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶(hù)的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
其握手過(guò)程原理,就不必說(shuō)了,有很多詳細(xì)文章進(jìn)行敘述,本文只關(guān)注研究重點(diǎn)。
在第三次握手過(guò)程中,如果服務(wù)器收到ACK,就會(huì)與客戶(hù)端建立連接,此時(shí)內(nèi)核會(huì)把連接從半連接隊(duì)列移除,然后創(chuàng)建新的連接,并將其添加到全連接隊(duì)列,等待進(jìn)程調(diào)用。
如果服務(wù)器繁忙,來(lái)不及調(diào)用連接導(dǎo)致全連接隊(duì)列溢出,服務(wù)器就會(huì)放棄當(dāng)前握手連接,發(fā)送RST給客戶(hù)端,即connection reset by peer。
在linux平臺(tái)上,客戶(hù)端在進(jìn)行高并發(fā)TCP連接處理時(shí),最高并發(fā)數(shù)量都要受系統(tǒng)對(duì)用戶(hù)單一進(jìn)程同時(shí)打開(kāi)文件數(shù)量的限制(這是因?yàn)橄到y(tǒng)每個(gè)TCP都是SOCKET句柄,每個(gè)soker句柄都是一個(gè)文件),當(dāng)打開(kāi)連接超過(guò)限制,就會(huì)出現(xiàn)too many open files。
使用下指令查看最大句柄數(shù)量:
增加句柄解決方案
安裝:
go get -v -u github.com/rocket049/connpool
go get -v -u gitee.com/rocket049/connpool
rocket049/connpool 包是本人用go語(yǔ)言開(kāi)發(fā)的,提供一個(gè)通用的TCP連接池,初始化參數(shù)包括最高連接數(shù)、超時(shí)秒數(shù)、連接函數(shù),放回連接池的連接被重新取出時(shí),如果已經(jīng)超時(shí),將會(huì)自動(dòng)重新連接;如果沒(méi)有超時(shí),連接將被復(fù)用。
可調(diào)用的函數(shù):
調(diào)用示例:
TL;DR 在使用 Golang 編寫(xiě) TCP/UDP socket 的時(shí)候,第一步做的就是地址解析。
該函數(shù)返回的地址包含的信息如下:
TCPAddr 里, IP 既可以是 IPv4 地址,也可以是 IPv6 地址。 Port 就是端口了。 Zone 是 IPv6 本地地址所在的區(qū)域。
從返回結(jié)果看該函數(shù)的參數(shù), network 指 address 的網(wǎng)絡(luò)類(lèi)型; address 指要解析的地址,會(huì)從中解析出我們想要的 IP , Port 和 Zone 。
從源碼中可以看出,參數(shù) network 只能是如下四個(gè)值,否則會(huì)得到一個(gè)錯(cuò)誤。
解析過(guò)程跟 ResolveTCPAddr 的一樣,不過(guò)得到的是 *UDPAddr 。
UDPAddr 包含的信息如下:
本文名稱(chēng):go語(yǔ)言tcp連接數(shù),go語(yǔ)言tcp框架
文章地址:http://chinadenli.net/article7/dsisiij.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、定制開(kāi)發(fā)、網(wǎng)站維護(hù)、品牌網(wǎng)站設(shè)計(jì)、面包屑導(dǎo)航、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)