查日志遇到一情况:
Server(openfire)关闭了一个socket连接,但是客户端(AIR)8分钟后才收到close事件。
查各方文档发现Socket有个SO_TIMEOUT参数,貌似C与Java都可以设置这个值,
见:http://msdn.microsoft.com/en-us/library/aa283445(v=VS.60).aspx
但是查了很多资料都没有找到ActionScript里setSoTimeout设置的是多少。
顺便学习了一下socket关闭的流程:
http://blog.csdn.net/factor2000/article/details/3929197
“当发起主动关闭的左边这方发送一个FIN过去后,右边被动关闭的这方要回应一个ACK,这个ACK是TCP回应的(同时TCP向上层应用程序提交一个ERROR,导致上面的SOCKET的send或者recv返回SOCKET_ERROR),而不是应用程序发送的,此时,被动关闭的一方就处于CLOSE_WAIT状态了。如果此时被动关闭的这一方不再继续调用closesocket,那么他就不会发送接下来的FIN,导致自己老是处于CLOSE_WAIT。只有被动关闭的这一方调用了closesocket,才会发送一个FIN给主动关闭的这一方,同时也使得自己的状态变迁为LAST_ACK,待接收到主动关闭方发送的ACK后,才会将SOCKET置为CLOSED。”
这个没看明白:http://www.gnu.org/software/libc/manual/html_node/Closing-a-Socket.html#Closing-a-Socket
关于SO_TIMEOUT:
http://blog.csdn.net/woshisap/article/details/6597413
备忘。