tl; dr :Wireshark说gen_tcp正在发送FIN
,RST
标志,然后我才能完成接收所有我的数据。
我通过gen_tcp从活动套接字接收数据。它来自(未加密的)OpenSSL套接字,通过BIO_write()(参见http://linux.die.net/man/3/bio_write),gen_tcp正在监听以下选项:
[binary,{packet,0},{active,true},{reuseaddr,false},{recbuf,256000}]
我正在使用Erlang / OTP的Win32发行版运行它,并期望接收一些非常大的数据,因此大的recbuf。这在过去对我有用。
我只从发送出的每个 total 数据包中获得前1516个字节,然后gen_tcp发送回FIN
,我无法弄清楚为什么会这样。< / p>
以下是我的Wireshark dump:
的快照
* 37.184是Erlang接收器,* 35.125是OpenSSL发送器。
蓝线是“标头”数据包,通过协议版本发送。数据长度为“Len = 1460”的块是第一个大数据blob。然后是ACK @#3,和带有FIN
@#4
黄线是成功发送的最后一块数据。
有什么想法吗?