Flash Socket 和 Erlang Socket 通信的注意事项

本文介绍了如何通过设置Erlang的Socket选项和使用FlashSocket的writeUTF()方法来实现无粘包问题的网络通信解决方案。通过引入FlashSocket的自动增加包头长度的协议,使得Erlang与Flash之间通信更为流畅,避免了粘包带来的困扰。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文来自:http://www.iteye.com/topic/401041

 

学erlang有一段时间了,现在在维护一套webim系统
并打算扩展成 webgame 的服务程序

在没有使用包协议的时候,遇到好多粘包问题,实在恼火

查阅了相关资料:

Flash Socket 的 writeUTF() 会自动增加包头长度的协议,刚好对应了
Erlang的Socket选项 {packet,2}

这使得两者的通信非常完美,再也不用担心粘包什么的问题了

 

下面是我写的一个Flash Socket 接口:SocketBridge.as

 

Js代码 复制代码  收藏代码
  1. package {  
  2.     import flash.display.Sprite;  
  3.     import flash.events.*;  
  4.     import flash.net.Socket;  
  5.     import flash.utils.*;  
  6.     import flash.external.ExternalInterface;  
  7.     import flash.system.*;  
  8.     public class SocketBridge extends Sprite {  
  9.         Socket.prototype.timeout    =3000;  
  10.         private var socket:Socket;  
  11.         public function SocketBridge()  
  12.         {  
  13.             socket = new Socket();  
  14.             socket.addEventListener( Event.CONNECT, onConnect );  
  15.             socket.addEventListener( ProgressEvent.SOCKET_DATA, onDataRecevice);  
  16.             socket.addEventListener( Event.CLOSE, onClose);  
  17.             socket.addEventListener( IOErrorEvent.IO_ERROR, onError);   
  18.               
  19.             if(ExternalInterface.available)  
  20.             {  
  21.                   
  22.                 ExternalInterface.addCallback("socket_connect",socket_connect);  
  23.                 ExternalInterface.addCallback("socket_send",socket_send);  
  24.                 ExternalInterface.addCallback("load_policy",load_policy);  
  25.             }  
  26.         }  
  27.         public function onError(e):void  
  28.         {  
  29.             ExternalInterface.call("sb_onerror",e.text);  
  30.             socket.close();  
  31.         }  
  32.         public function load_policy(host:String,port):void  
  33.         {  
  34.             Security.loadPolicyFile("xmlsocket://"+host+":"+port);    
  35.         }  
  36.           
  37.         public function socket_connect(host:String,port):void  
  38.         {  
  39.             try{  
  40.                 socket.connect(host,port);  
  41.             }catch(e){  
  42.                 ExternalInterface.call("sb_onerror",e.text);  
  43.             }  
  44.         }  
  45.           
  46.         public function socket_send(msg:String)  
  47.         {     
  48.             socket.writeUTF(msg);  
  49.             socket.flush();  
  50.         }  
  51.           
  52.         private function onConnect(event:Event):void   
  53.         {  
  54.             ExternalInterface.call("sb_onconnect",true);  
  55.         }  
  56.           
  57.         private function onClose(event:Event):void   
  58.         {  
  59.             socket.close();  
  60.             ExternalInterface.call("sb_onclose",true);  
  61.         }  
  62.   
  63.         private function onDataRecevice( eventrogressEvent ):void  
  64.         {  
  65.             var sdata:String;  
  66.             while(socket.bytesAvailable){  
  67.                 sdata = socket.readUTF();  
  68.                 ExternalInterface.call("sb_ondata",sdata);  
  69.             }  
  70.         }  
  71.   
  72.     }  
  73. }  
内容概要:本文档详细介绍了基于弹性架构搜索(Elastic Architecture Search, EAS)结合Transformer编码器进行多变量时间序列预测的项目实例。项目旨在自动化优化多变量时间序列预测模型结构,提升预测精度与鲁棒性,降低计算资源消耗,实现模型轻量化。通过MATLAB实现,项目采用Transformer编码器的多头自注意力机制,结合EAS的弹性权重共享分阶段搜索策略,解决了高维多变量时间序列的复杂依赖建模、架构搜索计算资源需求高、模型过拟合、多步预测误差积累、数据异构性与缺失值处理、复杂模型训练收敛等挑战。最终,项目构建了一个高度模块化可扩展的系统设计,适用于智能制造、能源管理、智慧交通等多个工业场景。 适合人群:具备一定编程基础,对时间序列预测、深度学习及MATLAB有一定了解的研发人员研究人员。 使用场景及目标:①自动化优化多变量时间序列预测模型结构,提升预测精度与鲁棒性;②降低计算资源消耗,实现模型轻量化;③实现高度模块化与可扩展的系统设计,促进人工智能在工业领域的深度应用;④提供科研与教学的典范案例与工具,探索深度学习架构搜索在时序预测的前沿技术;⑤促进多变量时序数据融合与异质信息处理能力,推动MATLAB深度学习工具箱的应用与扩展。 其他说明:项目不仅聚焦于模型性能提升,更注重计算资源节约应用落地的可行性。借助弹性架构搜索自动化调参,减少人工经验依赖,加快模型迭代速度,降低开发门槛。结合Transformer编码器的表达能力,显著改善多变量时间序列预测中的长期依赖捕捉异质数据融合问题,为各类时间序列分析任务提供一种全新的解决方案。项目通过详细的代码实现注释,帮助用户理解Transformer机制与弹性架构搜索如何协同工作,实现多变量时间序列预测。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值