平台: Android
我试图开发一种快速搜索算法,用于在我的局域网上搜索在线套接字。
第一个算法是在我的网关上创建255个套接字。
例子:
192.168.1.1是我的门户
因此,在搜索联机套接字时,我必须创建套接字并将192.168.1.0连接到192.168.1.254。这是快速搜索,但它造成滞后,因为它消耗了大量的RAM。即使在我释放失败连接的套接字之后。联机的所有套接字都存储在向量数组中。
我通过以下方式处理失败的套接字:
System.gc()强制垃圾收集第二个算法只使用一个套接字,它将从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);然而,这是很慢的。
如何改进搜索算法?
发布于 2016-07-26 00:14:02
我终于找到了一个更快的解决方案。
我使用DatagramSocket (UPD)进行搜索。
这是因为它不需要连接到套接字服务器来发送数据。
datagramSocket.send(bytearray, start, length, ip, port);
https://stackoverflow.com/questions/38428083
复制相似问题