gpt4 book ai didi

actionscript-3 - 套接字错误 - 有时?

转载 作者:行者123 更新时间:2023-12-04 17:41:07 26 4
gpt4 key购买 nike

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

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

嗯...

输出:

Error #2044: Unhandled IOErrorEvent:. text=Error #2031: Socket Error.
at ---.server::Client()[---/server/Client.as:167]
at Function/<anonymous>()[---_fla.MainTimeline::frame1:430]
at Function/<anonymous>()
at Function/<anonymous>()[---_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 行,而它显然在其他地方?和/或可能是什么问题?

最佳答案

如果您以前没有使用过 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);
}

关于actionscript-3 - 套接字错误 - 有时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3645988/

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