2010-11-05 64 views
1

「索引超出範圍」錯誤我試圖構建一個簡單的as3服務器/客戶端應用程序。當使用readObject與Sockets

當客戶端連接到服務器時,它應該向服務器發送類似「1」的消息。

服務器執行以下操作:

private function onConnect(e:ServerSocketConnectEvent):void 
{ 
    incomingSocket = e.socket; 
incomingSocket.addEventListener(ProgressEvent.SOCKET_DATA, onData); 
    // You can now read and write data from the socket instance 
trace("looks like a connection happened!"); 
} 


private function onData(e: ProgressEvent):void { 
    var s:String = incomingSocket.readObject(); 

interrupt(s); 
} 

因此Flash拋出我的錯誤:

RangeError: Error #2006: The supplied index is out of bounds. at flash.net::Socket/readObject()

行號Flash提供了我,表示這個問題是

var s:String = incomingSocket.readObject(); 

有沒有人知道這裏發生了什麼?

謝謝! n

+0

請告訴我們您如何發送您的信息。 – blue112 2010-11-05 12:56:51

回答

1

readObject用於讀取套接字上的序列化對象。

如果您發送了一個字符串,請使用readUTF或readUTFBytes(如果您知道該字符串應具有的長度)。

如果您發送了一個Int,請使用readInt或相應的方法。

+0

謝謝你的回答。我嘗試了readUTF,但隨後它拋出:「Error:Error#2030:End of file encountered。 \t at flash.net::Socket/readUTF()」 – nbuechi 2010-11-05 12:40:05

+0

您應該熟悉Adobe Live Reference。它會告訴你,參數是作爲uint的字節數。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/Socket.html#readUTFBytes%28%29 – Robusto 2010-11-05 12:45:47

+0

是的,我發現,所以我編輯了我的評論。我現在遇到了這樣的問題:「Error:Error#2030:End of file was encountered。at flash.net::Socket/readUTF()」 – nbuechi 2010-11-05 12:50:32