У меня есть приложение на C ++, которое отправляет изображения в интерфейс Flex / Air через TCP-сокеты.Вся эта передача данных происходит на одном хосте, поэтому сокет подключается к локальному хосту.
Проблема в том, что Flex / Air очень долго читает весь образ из сокета.Сервер отправляет изображение довольно быстро, но Flex / Air считывает это изображение крошечными частями.Все изображение имеет около 300 МБ, а Flex / AIR читает только около 1 КБ за каждую итерацию.Таким образом, flex продолжает вызывать обратный вызов данных сокета, что приводит к замедлению работы приложения.
Есть ли какие-либо синхронные сокеты, которые можно использовать с flex, или какой-то тип сокета, который может считывать все данные одновременно?Если сокеты не лучший выбор, есть ли другие более быстрые варианты?
Мой класс сокетов выглядит так:
public class ClientSocket extends Socket
{
public function ClientSocket(host:String, port:int)
{
super();
addListeners();
...
this.endian = Endian.LITTLE_ENDIAN;
}
private function addListeners():void
{
...
addEventListener(ProgressEvent.SOCKET_DATA, onSocketData);
...
}
private function onSocketData(event:ProgressEvent):void
{
try
{
...
var serverMessage:ByteArray = new ByteArray;
readBytes(serverMessage);
...
}
catch(error:Error)
{
//Error handling
}
}
}