c++ - 有什么方法可以比套接字更快地将数据从 C++ 传输到 Flex/Air?

标签 c++ apache-flex sockets air

我有一个 C++ 应用程序,它通过 TCP 套接字将图像发送到 Flex/Air 前端。所有这些数据传输都发生在同一台主机中,因此套接字连接到本地主机服务器。

问题是 Flex/Air 需要很长时间才能从套接字读取整个图像。服务器发送图像的速度非常快,但 Flex/Air 会分段读取图像。整个图像大约有 300MB,而 Flex/AIR 每次迭代只读取大约 1KB。因此 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
        }           
    }
}

最佳答案

我会使用 Native Extensions for AIR .这提供了一个接口(interface),以便您可以直接在 C++ 和 AS3 之间发送数据。它肯定会更快,但您需要以 AIR 3.0 为目标,并且您需要为您的代码运行的每个平台创建一个扩展。

关于c++ - 有什么方法可以比套接字更快地将数据从 C++ 传输到 Flex/Air?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9095554/

相关文章:

c++ - 来自 std::uniform_int_distribution 的重复值

javascript - 在浏览器窗口中检测另一个应用程序(包括百分比重叠)

php - PHP套接字服务器不响应共享主机帐户上的客户端连接

c# - TcpListener从C#中的套接字读取数据的问题

c++ - Q3D表面选择点信号

c++ - std::vector 如何处理可变长度的 std::string?

c++ - cout 和 sleep 导致不同的结果

apache-flex - 预定的媒体流

java - 高级 LCDS 主题的资源?

c - 那么由 socketpair() 生成的套接字可以在不同的进程中使用吗?