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

发布于 2024-09-16 12:22:33 字数 872 浏览 7 评论 0原文

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

这是我在闪存中的 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 ...
   }
 }

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

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

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

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

Hello I believe my flash client is losing some packets the server sends, because some packets get joined together hence I believe it drops them.

Here is my packetHandler in flash

  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 ...
   }
 }

A possible packet I sniffed sent by the server was.

u:105.w. aka (75 3A 31 30 35 00 77 00)

so the waiting packet never came in.

How would i go about fixing this bug.. I am using XMLSocket

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

り繁华旳梦境 2024-09-23 12:22:33

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

var packet:Array = data.split("\x00");

K solved if anyone needs help with this turns out you can just do this

var packets:Array = data.split("\x00");

遗忘曾经 2024-09-23 12:22:33

请改用 flash.net.Socket

Use a flash.net.Socket instead.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文