ここに行きます。フレックスソケットとループ
私のネットワーク上では、いくつかのPCがすべて注文されたサーバーを実行しており、問い合わせを受けたときにログインしたユーザーのユーザー名が返されます。
次のコードがあります。
private function LoopAndList():void
{
var loopSocket:Socket;
var fourthOctet:Number = 6;
var stubIP:String = "192.168.0.";
var loophost:String;
loopSocket = new Socket();
loopSocket.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);
loopSocket.addEventListener(Event.CONNECT, connectHandler);
loopSocket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
loopSocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
textarea1.text = "";
while (fourthOctet != 0)
{
loophost = stubIP + fourthOctet;
textarea1.text = textarea1.text + loophost + "\n";
textarea1.text = textarea1.text + "Connecting to: " + loophost + "\n";
try
{
loopSocket.connect("192.168.0.4", 19001);
fourthOctet--;
}
catch(ioError:IOError)
{
textarea1.text = textarea1.text + "Sec error \n ";
fourthOctet--;
}
catch(secError:SecurityError)
{
textarea1.text = textarea1.text + "io error \n";
fourthOctet--;
}
これを実行すると、最初に考えたように動作しません。反復は行く。 4番目のオクテットの値がデクリメントされます。しかし、奇妙なことが起こる。上記のコードでは、ループ内にハードコードされたIPアドレスがあることに気づくでしょう。私はそこに常に有効な接続があることを保証するためにこれを入れました。それで、常に192.168.0.4に接続することに気付いています。
ただし、接続は最後の接続呼び出しでのみ発生します。
出力に含まがある:私はすべてを接続して喜んで実行するように期待する
192.168.0.6
Connecting to 192.168.0.6
192.168.0.5
Connecting to 192.168.0.5
...
192.168.0.1
Connecting to 192.168.0.1
Sending Data
IN REad function
data received
username/192.168.0.1
。誰がこれが失敗しているかについてのアイデアはありますか?
ありがとうございます。私は非同期ビットを理解しています。 「IN READ関数 データ受信 username/192.168.0.1 」ビットは接続ハンドラを介して行われます。私は各ループの反復が呼び出しを実行し、同じテキストを生成することを期待していたので、上記のように6回反復すると、上記の6回は見えなくなります。コードに示されているように、常にこれで実行されるので、有効なIPなどでないためにIOエラーが取り除かれるはずです。このサーバーは、コードの他の部分を実行するとすぐに戻ります。 – user1148158