长连接就是在TCP建立连接后,读写一次数据完成之后并不立即释放连接,而短连接是在一次TCP连接之后只进行一次数据的读写就释放连接。
编程中要使一个套接字所建立的连接成为长连接,可以使用setsockopt()函数。它使用的是TCP的keepalive定时功能,利用sysctl -a|grep tcp_keepalive可以查看内核中对keepalive的设置。
net.ipv4.tcp_keepalive_time = 7200
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_intvl = 75
以上是keepalive的三个属性设置。time属性表示经过多长时间套接字没有数据的读写,就发送一次keepalive报文;probes属性表示一共发送几次keepalive报文;intvl表示每次发送keepalive报文的时间间隔。