gpt4 book ai didi

sockets - 在AS3中搜索在线套接字

转载 作者:行者123 更新时间:2023-12-03 11:51:47 25 4
gpt4 key购买 nike

平台:AIR for Android

我正在尝试开发一种快速搜索算法来搜索我的LAN网络上的在线套接字。

第一个算法是在我的网关上创建255个套接字

例子:

192.168.1.1是我的网关

因此,在搜索在线套接字时,我将不得不创建套接字并连接192.168.1.0到192.168.1.254。这可以快速进行搜索,但是由于占用大量RAM,因此会导致滞后。甚至在我处理掉连接失败的 socket 后。所有在线的套接字都存储在Vector数组中。

我通过以下方式处置发生故障的插槽:

  1. removing all listeners from the socket.
  2. closing the socket
  3. setting the socket to null.
  4. Call System.gc() to force garbage collection


第二种算法仅使用1个套接字,它将从192.168.1.0开始连接,并递增到255,直到找到一个在线套接字。当套接字连接失败时,它将根据超时进行到下一个IP。
var ip = '192.168.1';
var ipCounter = 0;

socket.addEventListener(Event.CONNECT, connectHandler);
socket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

socket.timeout = 50;

function connectHandler(e:Event):void{

}

function ioErrorHandler(e:IOErrorEvent):void{
ipCounter += 1;
if(ipCounter > 255){
ipCounter = 0;
}
socket.connect(ip+'.'+ipCounter.toString(), 18765);
}

socket.connect(ip+'.'+ipCounter.toString(), 18765);

这有效,但是很慢。

如何改善搜索算法?

最佳答案

我终于找到了一个更快的解决方案。

我改用DatagramSocket(UPD)进行搜索。

这是因为它不必连接到套接字服务器即可发送数据。
datagramSocket.send(bytearray, start, length, ip, port);

关于sockets - 在AS3中搜索在线套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38428083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com