根据我们的测试,如果关闭 DataSocket,似乎不会发送“最近”写入的信息。
我们在 AS3 代码中使用 FTP,并打开一个命令和数据套接字。
每次我们在其上写入数据时,都会正确刷新 dataSocke。
问题是当来自 fileStream 的所有信息都已被读取并写入/刷新到 dataSocket 时,我们关闭了套接字。
在伪代码中:
-bytesToWrite = filestream.bytesToRead();
-Datasocket.write(bytesToWrite).
-Datasocket.flush():
-if (filestream.noMoreData)
DataSocket.close().
如果我们使用计时器(大约 10 秒)关闭套接字,则正确发送,如果不是,则服务器中的文件不完整。
奇怪的是,在刷新之后,关闭一个套接字,只是关闭一个套接字,SO 有这个信息要发送并决定什么时候发送它,你不能说“嘿传输层,不要发送我刚刚写的你” :-)。
但似乎实际上 as3 套接字正在做类似的事情。我已经阅读了文档,如果你进行了刷新,它应该由 SO 负责,所以即使在关闭 AS3 套接字之后,如果 SO 有信息要发送,它也应该发送它。
知道为什么会出现这种行为吗?
提前致谢。