close

以下轉載自神魂顛倒

[6]
ActionScript3.0 Socket編程(6)

6.處理使用Sockets時候引發的錯誤.

解決方法:
    使用try/catch處理I/O和EOF(end of file)錯誤.

討論:
    Socket和XMLSocket類對錯誤的處理很類似.不如,當調用connect()方法的時候,在下面任何壹個條件成立的情況下Socket和XMLSocket對象會拋出壹個類型為SecurityError的錯誤.

* 該.swf未通過本地安全認證.
* 端口號大於655535.

    當調用XMLSocket對象的send()或者Socket對象的flush()的時候,如果socket還沒有連接這兩個方法都會拋出壹個類型為 IOError的錯誤.盡管妳可以將send()或者flush()方法放入try/catch結構塊中,妳也不能依賴於try/catch結構塊作為妳 應用程序的邏輯.更好的辦法是,在調用send()或者flush()方法之前使用壹個if語句首先判斷壹下Socket對象的connected屬性是 否為True.例如,下面的代碼使用了if語句作為程序邏輯的壹部分,當Socket對象當前不是連接狀態就調用 connectToSocketServer()方法.但是我們依然需要將flush()方法放到try/catch語句塊中.通過使用 try/catch語句塊將flush()方法拋出的錯誤寫入到日誌中:
復制內容到剪貼板代碼:
if ( socket.connected ) {
    try {
        socket.flush(  );
    }
    catch( error:IOError ) {
        logInstance.write( "socket.flush error\n" + error );
    }
}
else {
    connectToSocketServer(  );
}
所有的Socket類的read方法都能夠拋出EOFError和IOError類型的錯誤.當妳試圖讀壹個數據,但是沒有任何可用數據將觸發EOF錯誤.當妳試圖從壹個已經關閉的Socket對象中對數據時將會拋出I/O錯誤.

    除了Socket和XMLSocket類的方法能夠拋出的錯誤以外,這些類的對象還會分發錯誤事件.有兩種基本的錯誤事件類型,他們分別由 socketIOError和securityError錯誤引起.IOError事件為IOErrorEvent類型,當數據發送或接收失敗觸發該事 件.SecurityError事件是SecurityErrorEvent類型,當壹個Socket嘗試連接壹個服務器,但由於服務器不在安全沙箱範圍 之內或者端口號小於1024的時候觸發該錯誤事件.

註意:這兩種安全策略引起的錯誤都可以通過跨域訪問策略文件解決.

arrow
arrow
    全站熱搜

    阿酷 發表在 痞客邦 留言(0) 人氣()