如何在 Flash、XMLSocket 中拆分数据包

Posted

技术标签:

【中文标题】如何在 Flash、XMLSocket 中拆分数据包【英文标题】:How to split packets in flash, XMLSocket 【发布时间】:2011-04-04 15:39:53 【问题描述】:

您好,我相信我的 flash 客户端丢失了服务器发送的一些数据包,因为一些数据包连接在一起,因此我相信它会丢弃它们。

这是我在 flash 中的 packetHandler

  private var xmlsock:XMLSocket;
  this.xmlsock = new XMLSocket();
  xmlsock.connect("127.0.0.1", 1234);
  this.xmlsock.addEventListener(DataEvent.DATA, this.packetHandler);


  public function packetHandler(event:DataEvent):void 
   var packet:String = event.data;
   var args:Array = packet.split(":");
   if(args.length <= 0) return;

   switch(args[0]) 
    case 'w': //waiting
     ExternalInterface.call("waiting");
     break;
    case 'u': //user count
     if(args.length >= 2)
      ExternalInterface.call("userCount", args[1]);
     break;
                                //... etc handlers ...
   
 

我嗅探到的可能是服务器发送的数据包。

你:105.w。又名 (75 3A 31 30 35 00 77 00)

所以等待的数据包永远不会进来。

我将如何修复这个错误.. 我正在使用 XMLSocket

【问题讨论】:

其实不然,您还能如何使用 XMLSocket?你建立自己的服务器。但有时当数据包被刷新时,它们会合并为一个数据包,因此需要将它们按空字节拆分 【参考方案1】:

请改用flash.net.Socket

【讨论】:

【参考方案2】:

如果有人需要帮助,K 已解决,事实证明你可以这样做

var 数据包:Array = data.split("\x00");

【讨论】:

以上是关于如何在 Flash、XMLSocket 中拆分数据包的主要内容,如果未能解决你的问题,请参考以下文章

Netty Flash XmlSocket 消息接收错误

Flash 客户端 XMLSocket 未连接到服务器

Flash客户端XMLsocket无法连接到python服务器

XMLSocket 在 Firefox 中工作,但不在 IE 中

flash xmlsocket连接主机是不是需要专用IP?

XMLSocket 可以接收数据但不能发送