2013-04-09 38 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