2009-08-24 24 views
2

在Flex Builder 3中使用动作脚本3.套接字上的文件结尾是什么意思?

当处理SOCKET_DATA事件时,我偶尔看到随机出现“Error#2030:End of file was encountered。”。当调用socket.readInt()。我对这个错误意味着什么感到困惑,因为我没有阅读文件?我有点不喜欢插座。谢谢。

回答

3

阅读关闭套接字时,即关闭,您将获得:Error #2002: Operation attempted on invalid socket.

结束文件错误通常发生在任何字节流,如果你看过比可用多个字节...这是情况文件,插座等...闪光灯的情况下,从SocketByteArray,甚至在其他情况下阅读时......

TCP/IP是基于包这样的情况,但是模拟的流。 ..因此,你只能读取流中的数据,这已经发送给你与TCP包...检查Socket::bytesAvailable找出,目前有多少字节...始终牢记,吨帽子你写的插座在一个操作中的数据,可以在多个包到达时,每极有可能造成闪存播放器来触发socketData事件......

格尔茨

back2dos

+0

只需跟进其他任何人就此问题。我认为这是因为我一直只检查bytesAvailable是否大于0,这是我从其他人的代码中看到的,然后再执行readInt,这将是4个字节。所以如果只有1到3个字节的数据,readInt会以某种方式假设失败。 – AaronLS 2009-08-25 02:06:41

7

文件结束错误通常意味着套接字的另一端已关闭其连接IIRC。

它的最终OF-原因文件是,在一个程序中一个非常低的水平,磁盘和一个插座上的文件都代表与一个数字 - 一个file descriptor - 该操作系统翻译成该对象表示一个文件或套接字或管道或其他。

通常情况下,您可以通过检查是否刚刚读取EOF来避免此类错误。如果您确实读过EOF,并且您尝试再次从套接字/文件中读取,那么您将收到EOF错误。


更新:根据 the ActionScript 9.0 documentation,如果另一端关闭套接字,确实会得到一个关闭事件。

+0

谢谢,我应该得到SOCKET_CLOSE事件或类似的,如果另一方关闭连接? – AaronLS 2009-08-24 11:21:46

+0

不错的猜测,但在Flash播放器的情况下不成立...请参阅我的回答... – back2dos 2009-08-24 12:15:38

相关问题