当前位置:  开发笔记 > 编程语言 > 正文

套接字错误 - 有时候?

如何解决《套接字错误-有时候?》经验,为你挑选了1个好方法。

所以 - 我有这个Socket(不是XMLSocket,只是Socket)客户端.我的服务器上还有一个自定义PHP脚本,它侦听端口X.我的客户端尝试连接到它.

一切正常,安全和沟通,同步和其他任何东西.但是 - Flash Player(实际上是AIR运行时)在尝试连接时会发出错误,但只有当服务器没有运行时......什么?这真的很奇怪 - 错误实际上是由try catch(IOError)处理的,甚至更奇怪,输出中指定的行作为错误行是我刚刚创建Socket的行......?

嗯...

输出:

Error #2044: Unhandled IOErrorEvent:. text=Error #2031: Socket Error.
    at ---.server::Client()[---/server/Client.as:167]
    at Function/()[---_fla.MainTimeline::frame1:430]
    at Function/()
    at Function/()[---_fla.MainTimeline::frame1:375]

码:

try {
    Sock = new Socket(); // THIS is line 167
} catch (e:IOError){
    log("Could not connect!");
    status = "disconnected";
}

这并不重要 - 服务器应该仍然在线,错误不会显示......但忽略错误并不好.

还有一件事:当我使用Sock.connect(...)注释掉我实际连接的行时 - 它不会抛出错误,但它显然不起作用...此外,连接部分也在try catch中(IOError)块...

为什么Flash说这个问题出现在第167行,显然是在其他地方?和/或可能是什么问题?



1> Juan Pablo C..:

如果您以前没有使用过Flash,这似乎不太明显,但net api中的许多错误都是异步的.这意味着,您无法使用catch块捕获它们,因为执行connect方法时不会抛出错误,但稍后会抛出错误.

事实上,错误消息表明你有一个未被捕获但IOErrorEvent没有IOError.

这包括在这里:

http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/net/Socket.html#connect()

基本上,您必须为IOErrorEvent添加一个处理程序(为SecurityErrorEvent添加一个也是个好主意).像这样的东西:

private function connect():void {
    socket = new Socket(host,port); 
    //  handle asynchronous errors in these handlers
    socket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
    socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
    try {
        socket.connect();
    } catch(ioError:IOError) {
    //  handle synchronous errors here  
    } catch(secError:SecurityError) {
    // and here
    }
}

private function ioErrorHandler(event:IOErrorEvent):void {
    trace("ioErrorHandler: " + event);
}

private function securityErrorHandler(event:SecurityErrorEvent):void {
    trace("securityErrorHandler: " + event);
}

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有