0

ソケットサーバーとやり取りするフラッシュ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」または同様の数字の束としてトレースを取得します。これらのコードをそれぞれの文字に変換するアイデアはありますか?

4

2 に答える 2

2

最後に、私はそれを機能させました...助けてくれてありがとう。以下は私のために働いたコードです。

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);   
}
于 2013-04-17T06:35:31.703 に答える