Поиск онлайн сокетов в AS3

sockets actionscript-3

117 просмотра

1 ответ

648 Репутация автора

ПЛАТФОРМА: ВОЗДУХ для Android

Я пытаюсь разработать алгоритм быстрого поиска для поиска онлайн-сокетов в моей локальной сети.

первый алгоритм создавал базу 255 сокетов на моем шлюзе

ПРИМЕР:

192.168.1.1 мой шлюз

так что мне придется создавать сокеты и подключать 192.168.1.0 до 192.168.1.254 в поиске онлайн-сокетов. Это быстрый поиск, однако он вызывает лаги, потому что он потребляет много оперативной памяти. Даже после того, как я избавляюсь от сокетов, которые не смогли подключиться. Все подключенные сокеты хранятся в массиве Vector.

Я избавляюсь от неисправных сокетов:

  1. удаление всех слушателей из сокета.
  2. закрытие розетки
  3. установка сокета в ноль.
  4. Призыв System.gc()к принудительному сбору мусора

Во втором алгоритме использовался только 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);

это работает, однако, это медленно.

Как я могу улучшить алгоритм поиска?

Автор: John Pangilinan Источник Размещён: 18.07.2016 03:12

Ответы (1)


3 плюса

648 Репутация автора

Решение

Я наконец нашел более быстрое решение.

Я использовал DatagramSocket(UPD) вместо этого для поиска.

Это потому, что ему не нужно подключаться к серверу сокетов для отправки данных.

datagramSocket.send(bytearray, start, length, ip, port);

Автор: John Pangilinan Размещён: 26.07.2016 12:14
Вопросы из категории :
32x32