我有一个与套接字服务器交互的 Flash 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”或类似的数字。任何想法将这些代码转换为相应的字符?