2009-08-24 44 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

相關問題