tl;博士:Wireshark 说 gen_tcp 正在发送FIN
,RST
标志,然后我才能完成接收我的所有数据......
我正在通过 gen_tcp 从活动套接字接收数据。它来自通过 BIO_write() 的(未加密的)OpenSSL 套接字(参见http://linux.die.net/man/3/bio_write)并且 gen_tcp 正在使用以下选项进行侦听:
[binary,{packet,0},{active,true},{reuseaddr,false},{recbuf,256000}]
我正在使用 Erlang/OTP 的 Win32 发行版运行它,并希望收到一些相当大的数据,因此会收到很大的 recbuf。过去,这对我来说效果很好。
我从每个发出的总FIN
数据包中只得到前 1516 个字节,然后 gen_tcp 发回 a ,我不知道为什么会这样。
这是我的Wireshark 转储的快照:
*37.184 是 Erlang 接收器,*35.125 是 OpenSSL 发送器。
蓝线是“标头”数据包,通过协议版本发送。数据长度为“Len=1460”的块是第一个大数据块。然后是 ACK @#3,然后 Erlang 用FIN
@#4表示错误
黄线是成功发送的最后一块数据。
有任何想法吗?