【问题标题】:"index is out of bounds" error when using readObject with Sockets使用带有套接字的 readObject 时出现“索引超出范围”错误
【发布时间】:2010-11-05 12:31:41
【问题描述】:

我正在尝试构建一个简单的 as3 服务器/客户端应用程序。

当客户端连接到服务器后,它应该向服务器发送一个类似“1”的消息。

服务器执行以下操作:

    private function onConnect(e:ServerSocketConnectEvent):void
{
    incomingSocket = e.socket;
incomingSocket.addEventListener(ProgressEvent.SOCKET_DATA, onData);
    // You can now read and write data from the socket instance
trace("looks like a connection happened!");
}


private function onData(e: ProgressEvent):void {
    var s:String = incomingSocket.readObject();

 interrupt(s);
}

所以 flash 向我抛出了错误:

RangeError:错误 #2006:提供的 索引超出范围。在 flash.net::Socket/readObject()

行号flash提供给我,说明问题是

var s:String = incomingSocket.readObject();

有人知道这里发生了什么吗?

谢谢! n

【问题讨论】:

  • 请告诉我们您是如何发送消息的。

标签: actionscript-3 sockets


【解决方案1】:

readObject 用于读取套接字上的序列化对象。

如果您发送了一个字符串,请使用 readUTF,如果您知道该字符串应具有的长度,请使用 readUTFBytes。

如果您发送了一个 Int,请使用 readInt 或相应的方法。

【讨论】:

  • 感谢您的回答。我用 readUTF 尝试过,但它抛出了我:“错误:错误 #2030:遇到文件结尾。在 flash.net::Socket/readUTF()”
  • 您应该熟悉 Adob​​e Live Reference。它会告诉你参数是 uint 的字节数。 help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/…
  • 是的,我发现了,所以我编辑了我的评论。我现在遇到的问题是:“错误:错误 #2030:遇到文件结尾。在 flash.net::Socket/readUTF()”
  • 向服务器发送数据时,您必须以空值 String.fromCharCode(0) 终止。回顾服务器,当您向客户端发送数据时,您必须以空值结束它,在 PHP 中它也是 chr(0)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-20
  • 1970-01-01
  • 2016-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多