之前写的一个程序需要与flash进行通信,根据flash关于policy-request-file的描述,服务器端甚至不需要读到<policy-file-request>这个请求,只需要返回一个crossdomain的协议,然后再把连接关闭。于是我的程序也这么写了,但是flash端就是说读不到数据,连接被拒绝。查了半天问题,抓包对比之后,发现
client->三次握手->server
cleint-><policy-file-request>->server
server->crossdomain->client
server->reset->client
根据reset的描述,这个时候client的所有资源被释放,因此也可能没有crossdomain的数据了。与之前一个可以运行的抓包对比发现差异发生在了server->crossdomain->client之后
client->fin->server
server->fin_ack->client
也就说是client主动关闭的连接,于是我也写成等待client主动关闭连接,果然Ok了,可是问题虽然解决了,但是原因还是没搞清楚。
后来在2w同学的帮助下,发现tcp协议有一段这样的描述:
Consider two peers, A and B, communicating via TCP. If B closes a socket and there is any data in B’s receive
queue, B sends a TCP RST to A instead of following the standard TCP closing protocol, resulting in an error return
value from recv( ).
而shutdown是没有问题,所以最终代码改成了在写完crossdomain之后,显式shutdown。至此真相大白了,看来一些tcp连接底层的东西还是得了解一下,否则一些边界问题还真不知道怎么查原因。
分享到:
相关推荐
本文介绍了Linux上TCP的Shutdown和Close操作。
以下是对linux中close与shutdown的区别进行了详细的分析介绍,需要的朋友可以过来参考下
1.close终止了数据传送的两个方向; 而shutdown可以有选择的终止某个方向的数据传送或者终止数据传送的两个方向。 2.shutdown how=SHUT_WR(关闭写端)可以保证对等方接收到一个EOF字符(FIN段),而不管是否有其他...
10.6 tcp_close函数 89 10.7 tcp_msssend函数 90 10.8 tcp_mssrcvd函数 91 10.9 tcp_dooptions函数 96 10.10 tcp_reass函数 98 10.11 小结 99 第11章 T/TCP实现:TCP输入 101 11.1 概述 101 11.2 预处理 103 11.3 ...
10.6 tcp_close函数 10.7 tcp_msssend函数 10.8 tcp_mssrcvd函数 10.9 tcp_dooptions函数 10.10 tcp_reass函数 10.11 小结 第11章 T/TCP实现:TCP输入 11.1 概述 11.2 预处理 11.3 首部预测 11.4 被动打开的启动 ...
10.6 tcp_close函数 89 10.7 tcp_msssend函数 90 10.8 tcp_mssrcvd函数 91 10.9 tcp_dooptions函数 96 10.10 tcp_reass函数 98 10.11 小结 99 第11章 T/TCP实现:TCP输入 101 11.1 概述 101 11.2 预处理 103 11.3 ...
10.6 tcp_close函数 89 10.7 tcp_msssend函数 90 10.8 tcp_mssrcvd函数 91 10.9 tcp_dooptions函数 96 10.10 tcp_reass函数 98 10.11 小结 99 第11章 T/TCP实现:TCP输入 101 11.1 概述 101 11.2 预处理 103 11.3 ...
SHUTDOWN-定时开机关机 SHUTDOWN-定时开机关机 SHUTDOWN-定时开机关机 SHUTDOWN-定时开机关机 SHUTDOWN-定时开机关机
shutdown自动关机很好用
shutdown.rar
ShutDown Expert ShutDown Expert ShutDown Expert
列举讲解shutdown的具体应用 shutdown命令的相关参数
这个提示文件部分根据每个人不同情况有点差别。 继续输入 SQL>alter database datafile 19 offline drop; 提示:数据库已更改。 循环使用最后两步,直到alter database open;后不再提示错误,出现“数据库已更改”...
电脑设置定时关机,shutdown命令详解
此bat文件解决小米miui链接电脑进入fastboot模式时出现press any key to shutdown的问题,以管理员身份运行即可
vista 关机命令 shutdownvista 关机命令 shutdownvista 关机命令 shutdownvista 关机命令 shutdownvista 关机命令 shutdown
C#shutdown.rarC#shutdown.rarC#shutdown.rarC#shutdown.rar
Oracle数据库startup和shutdown方式
Linux系统关机命令shutdown introduction
在oracle数据库中,关于shutdown命令的详解。对于新手很有帮助