有没有办法从C++;比插座更快地弯曲/充气? 我有一个C++应用程序,它通过TCP套接字将图像发送到Flex/AIR前端。所有这些数据传输都发生在同一台主机上,因此套接字连接到本地主机服务器

有没有办法从C++;比插座更快地弯曲/充气? 我有一个C++应用程序,它通过TCP套接字将图像发送到Flex/AIR前端。所有这些数据传输都发生在同一台主机上,因此套接字连接到本地主机服务器,c++,apache-flex,sockets,air,C++,Apache Flex,Sockets,Air,问题是Flex/Air需要很长时间才能从套接字读取整个图像。服务器发送图像的速度相当快,但Flex/Air读取图像的部分非常小。整个图像大约有300MB,Flex/AIR每次迭代读取的数据只有1KB左右。因此flex一直在调用套接字数据回调,这导致应用程序速度减慢 是否有任何同步套接字可与flex一起使用,或某种可以一次读取全部数据的套接字?如果插座不是最好的选择,还有其他更快的选择吗 我的套接字类如下所示: public class ClientSocket extends Socket {

问题是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
        }           
    }
}

如果可能的话,我认为你需要改变你的解决方案。您需要一个http服务器来承载您的图像,并将图像的文件名(或url)发送到Flex前端,然后您可以通过URLLoader加载它们,并且只侦听“完成”事件


我相信这会更快;o) 这个解决方案可行吗?

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

As3没有同步套接字。你能展示一下你的数据接收源代码吗?我不确定我能不能做到,因为服务器没有准备好发送图像,它对这些图像进行了大量转换。因此,我必须处理这些转换后的映像,这可能会导致磁盘使用问题。无论如何,我会试试这个解决方案,看看它有多快。我试过了,它没有比套接字解决方案快多少。我将图像保存在Apache的htdocs文件夹中,并通过http在空中访问它们。这个答案本身并没有太大帮助,但我使用了一些其他方法,例如在服务器端将图像转换为bmp,并使用画布绘制它们,我的应用程序现在速度更快,谢谢。