真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Go語言中怎么開啟TCPkeepalive-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)Go語言中怎么開啟TCPkeepalive,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

成都創(chuàng)新互聯(lián)公司-云計(jì)算及IDC服務(wù)提供商,涵蓋公有云、IDC機(jī)房租用、四川樂山服務(wù)器托管、等保安全、私有云建設(shè)等企業(yè)級互聯(lián)網(wǎng)基礎(chǔ)服務(wù),咨詢熱線:18982081108

TCP-keepalive — 一個輕量級的 ping

TCP keepalive發(fā)送沒有(或者幾乎沒有)包體負(fù)載的 TCP 報文給對端,并且對端會回復(fù) keepaliveACK確認(rèn)包。它不是 TCP 標(biāo)準(zhǔn)的一部分(盡管在RFC1122[4]描述的這樣。

# Idle timecat /proc/sys/net/ipv4/tcp_keepalive_time# Retry intervalcat /proc/sys/net/ipv4/tcp_keepalive_intvl# Ping amountcat /proc/sys/net/ipv4/tcp_keepalive_probes

在 Go 語言中如何設(shè)置?

由于我最近使用 Go 語言比較多,我需要在 Go 語言中運(yùn)用 TCP keepalive。

討論開始之前需要說明,以下內(nèi)容適用于 Linux。我不是百分百確定它是否適用于 OSX,但我?guī)缀蹩梢钥隙ㄋ贿m用于 Windows。

連接的特殊類型

首先,我注意到我在服務(wù)端程序中只使用了net.Conn[6]類型。

這意味著,我們需要使用ListenTCP[8]而不是Listen[10](它們的調(diào)用方式有區(qū)別,ListenTCP使用結(jié)構(gòu)體而不是字符串來表示地址。我們調(diào)用方式大概會像這樣:ListenTCP("tcp", &net.TCPAddr{Port: myClientPort})。如果你不特別指定的話,IP 的默認(rèn)值為0.0.0.0)。之后它會返回我們需要的類型TCPConn。

Go 語言提供的方法

如果你翻看文檔可能會注意到這兩個相關(guān)的方法:SetKeepAlive[12]。func (c *TCPConn) SetKeepAlive(keepalive bool) error的調(diào)用方式十分簡單:傳入true從而打開 TCP keepalive 機(jī)制。

但是接下來的func (c *TCPConn) SetKeepAlivePeriod(d time.Duration) error就有些令人困惑了。我們用它究竟設(shè)置的是什么?答案可以在這篇文章[14]函數(shù)調(diào)用。我們來看它的實(shí)現(xiàn)。

func (f *File) Fd() uintptr { if f == nil { return ^(uintptr(0))    } // If we put the file descriptor into nonblocking mode, // then set it to blocking mode before we return it, // because historically we have always returned a descriptor // opened in blocking mode. The File will continue to work, // but any blocking operation will tie up a thread. if f.nonblock {        f.pfd.SetBlocking()    } return uintptr(f.pfd.Sysfd)}

如果文件描述符處于非阻塞模式,會將它修改為阻塞模式。根據(jù)stackoverflow 的這個回答[16],它使得你可以獲取RawConn關(guān)于Go語言中怎么開啟TCPkeepalive就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


本文題目:Go語言中怎么開啟TCPkeepalive-創(chuàng)新互聯(lián)
鏈接地址:http://weahome.cn/article/dpijji.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部