keepalive作用

keepalive并不是为了让tcp保持长连接,而只是一种让操作系统可以自动检测连接意外断开的机制,一个连接保持长连接是因为建立之后没有断开,而不是因为设置了keepalive。
This commit is contained in:
代君
2016-12-09 14:20:07 +08:00
committed by GitHub
parent 8d7accd78c
commit c3637d2ad7

View File

@@ -302,8 +302,7 @@ TCP有很多连接控制函数我们平常用到比较多的有如下几个
用来设置写入/读取一个连接的超时时间。当超过设置时间时,连接自动关闭。
func (c *TCPConn) SetKeepAlive(keepalive bool) os.Error
设置客户端是否和服务器端保持长连接可以降低建立TCP连接时的握手开销对于一些需要频繁交换数据的应用场景比较适用。
设置keepAlive属性是操作系统层在tcp上没有数据和ACK的时候会间隔性的发送keepalive包操作系统可以通过该包来判断一个tcp连接是否已经断开在windows上默认2个小时没有收到数据和keepalive包的时候人为tcp连接已经断开这个功能和我们通常在应用层加的心跳包的功能类似。
更多的内容请查看`net`包的文档。
## UDP Socket