好吧,在這裏。彈性插座和循環
在我的網絡上,我有幾臺電腦都運行一個定製服務器,它將返回查詢時登錄的用戶名。
我有以下一段代碼。
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--;
}
現在,當它運行它不起作用,因爲我第一次想到。迭代去。第四個十進制值遞減。但有些奇怪的事情發生。你會注意到在上面的代碼中我有一個硬編碼的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功能 數據收到 用戶名/ 192.168.0.1 」位通過連接處理程序完成。我期待每個循環迭代運行調用併產生相同的文本,所以對於6次迭代,如上所述,我期望看到上述6次不是1.如代碼所示,我有一個硬編碼的IP和teh服務器是總是在這上面運行,所以這應該刪除任何IO錯誤,因爲它不是有效的IP等。當我運行代碼的其他部分時,該服務器立即返回。 – user1148158 2012-01-13 21:25:44