
时长:大小11.14M
作者回复: 2是一个很好的例子。
作者回复: 👍
作者回复: HTTP的 keep-alive是为了使http变成长连接,在此前的http 1.0中,每次http的请求-响应之后,tcp连接就会被释放掉,这显然是非常浪费的,于是通过加入keep-alive,使得http连接不会被立即释放。
作者回复: 当然有。服务器端要探活client来保证自己不会维护无效连接,客户端来探活保持自己是不是可以持续申请资源。
作者回复: 是的,大部分的应用程序开发者都会选择自己在应用层处理连接有效性的检测。
作者回复: 首先,客户端应用程序崩溃是可以有FIN包的,如果有的话,read阻塞就可以返回了;其次,如果真的是客户端机器跪了,那么是没有FIN包发出的,这个时候,我们只好一直在那里傻等。 且慢,还有别的辙,那就是不要用阻塞I/O,不要在哪里傻傻等待。使用I/O复用就可以办到的,往后看就会明白了。
作者回复: Bingo。确实是我忘记了:)
作者回复: 学习了。
作者回复: 这是因为,嗯,跟select实现有关,我再后面讲select时详细剖析,现在先记住吧。
作者回复: 可以设置的,但是有时候应用层需要感知处理这样的异常