2013-04-09 43 views
0

讀取數據我有一個閃存AS3文件與套接字服務器交互,服務器以純文本形式發送數據。我無法讀取使用Socket類從服務器發送的數據。下面是我在Flash中使用的代碼。無法從套接字

var socket:Socket = new Socket("localhost", 9231); 

socket.addEventListener(Event.CONNECT, socketConnectHandler, false, 0, true); 
socket.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler, false, 0, true); 

function socketConnectHandler(event:Event):void{ 
    trace("Connection has been established "); 
} 

function socketDataHandler(event:ProgressEvent):void{ 
    var stream:ByteArray = new ByteArray(); 
    socket.writeBytes(stream, 0, 0); 
    trace(stream.readUTF()); 
    trace(socket.readUTF()); 
} 

我得到以下錯誤,而我嘗試閱讀的ByteArray和插座數據被髮送。

Error: Error #2030: End of file was encountered. 
    at flash.net::Socket/readUTF() 
    at socket_test_fla::MainTimeline/socketDataHandler() 

我嘗試了各種組合,以使它無法成功地工作。任何幫助我理解問題並找到解決辦法的線索都會令您感激不盡。

更新:

我修改由@t給出代碼

var stream:ByteArray = new ByteArray(); 
socket.writeBytes(stream, 0, 0); 

var data:String = ""; 
while(socket.bytesAvailable > 0) { 
    data += socket.readByte(); 
} 

trace("data "+ data); 

我得到的痕跡爲 「0124661171161161111109579756184114117101124-1」 或類似的一串數字。任何想法將這些代碼轉換爲相應的字符?

回答

1

最後我得到它的工作......感謝所有的幫助。以下是適合我的代碼。

var socket:Socket = new Socket("localhost", 2553); 

socket.addEventListener(Event.CONNECT, socketConnectHandler, false, 0, true); 
socket.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler, false, 0, true); 

function socketConnectHandler(event:Event):void{ 
    trace("Connection has been established "); 
} 

function socketDataHandler(event:ProgressEvent):void{ 

    var stream:ByteArray = new ByteArray(); 
    socket.writeBytes(stream, 0, 0); 

    var data:String = ""; 

    while(socket.bytesAvailable){ 
     data += socket.readUTFBytes(1); 
    } 

    trace("data "+ data); 
} 
+0

'socket.writeBytes(stream,0,0);'線沒用,你不用發送任何東西。也許你沒有從服務器獲取任何數據,因爲你首先沒有發送任何數據。 (這取決於它是什麼樣的服務器)。 – SSpoke 2014-03-12 21:04:11

1

文件結束意味着沒有足夠的數據可供讀取。

var data:String = ""; 
while(socket.bytesAvailable > 0) { 
    data += socket.readUTF(); 
} 

而且您正在嘗試讀取空「流」ByteArray。

+0

ByteArray不是空的,我已經檢查過了。此代碼也會引發相同的錯誤。可能需要研究更多關於字節和ByteArray。謝謝Taanielo! – 2013-04-10 02:29:33