ソケットサーバーとやり取りするフラッシュAS3ファイルがあり、サーバーはデータをプレーンテキストとして送信します。Socket クラスを使用してサーバーから送信されたデータを読み取ることができません。フラッシュで使用しているコードは以下のとおりです。
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」または同様の数字の束としてトレースを取得します。これらのコードをそれぞれの文字に変換するアイデアはありますか?