gpt4 book ai didi

apache-flex - Flex/AIR Socket 通信 - Flex 从不接收数据

转载 作者:行者123 更新时间:2023-12-03 12:06:29 29 4
gpt4 key购买 nike

我有一个 flex .swf 和一个单独的 AIR 项目,我试图通过套接字相互通信。

这两个程序连接正常,.swf 能够毫无问题地将数据发送到 AIR 应用程序。但是,我发现当 AIR 应用程序将数据发送回 Flex 时,它从未被接收到。

  • .swf 通过 file:// 在本地启动浏览器中的 URI。
  • .swf 连接,CONNECT事件被触发
  • 我添加了断点,按照建议 here 寻找策略文件的请求。 ,但我从未看到从 SWF 向 AIR 应用程序发出对策略文件的请求。

  • 这是我从 SWF 运行以监听数据的代码片段:
        private var address:String;
    private var port:int;
    private var socket:Socket;
    private var log:ILogger = LogUtil.getLogger(this);

    public function SocketPlayer(port:int=41051,address:String="127.0.0.1")
    {
    this.port = port;
    this.address = address;
    connect();
    }
    public function connect():void
    {
    socket = new Socket();
    socket.addEventListener(DataEvent.DATA,onData);
    socket.addEventListener(Event.CLOSE,logEvent);
    socket.addEventListener(Event.CONNECT,logEvent);
    socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR,logEvent);
    socket.addEventListener(IOErrorEvent.IO_ERROR,logEvent);
    socket.connect(address,port);
    log.info("Socket connected on {0}:{1}",address,port);
    }
    private function logEvent(event:Event):void
    {
    log.info("Event: {0}", ObjectUtil.toString(event));
    if (event is TextEvent)
    {
    log.error(TextEvent(event).text)
    }
    }
    private function onData(event:DataEvent):void
    {
    log.info("Data: " + event.data);
    }

    以下是 AIR 应用程序中用于发送数据的代码:
        public function execute():void
    {
    var message:String = "Testing...";
    socket.writeUTF(message);
    socket.flush();
    }

    (注意 socket 在本地存储,在 ServerSocketConnectEvent 中传递,但此处未显示此代码)

    如果我在 SWF 中发送的代码中放置一个断点,我注意到套接字有一个私有(private)的 _timeoutEvent属性,设置为 flash.events.SecurityErrorEvent 的实例带有以下错误文本:
    Error #2048: Security sandbox violation: file:///Users/martypitt/dev//ParsleyTest/bin-debug/RecordingTest.swf cannot load data from 127.0.0.1:41051.

    但是, SecurityErrorEvent永远不会被我的代码捕获(我不确定这是否表明它实际上曾经被发送过)。

    我需要采取其他步骤来允许这种通信吗?

    最佳答案

    哎呀——这里的问题是我在听错误的事件..

    我应该听ProgressEvent.SOCKET_DATA而不是 DataEvent.ON_DATA ,因为这是 Socket ,而不是 XMLSocket .

    关于apache-flex - Flex/AIR Socket 通信 - Flex 从不接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7025928/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com