http://hideto.iteye.com/blog/235811

需要下载as3corelib来为ActionScript3处理JSON codec

server.erl

Java代码  
  1. -module(server).
  2. -export([start/0,start/1,process/1]).
  3. -define(defPort, 8888).
  4. start() -> start(?defPort).
  5. start(Port) ->
  6. case gen_tcp:listen(Port, [binary, {packet, 0}, {active, false}]) of
  7. {ok, LSock} -> server_loop(LSock);
  8. {error, Reason} -> exit({Port,Reason})
  9. end.
  10. %% main server loop - wait for next connection, spawn child to process it
  11. server_loop(LSock) ->
  12. case gen_tcp:accept(LSock) of
  13. {ok, Sock} ->
  14. spawn(?MODULE,process,[Sock]),
  15. server_loop(LSock);
  16. {error, Reason} ->
  17. exit({accept,Reason})
  18. end.
  19. %% process current connection
  20. process(Sock) ->
  21. Req = do_recv(Sock),
  22. io:format("~p~n", [Req]),
  23. {ok, D, []} = rfc4627:decode(Req),
  24. {obj, [{"name", _Name}, {"age", Age}]} = D,
  25. Name = binary_to_list(_Name),
  26. io:format("Name: ~p, Age: ~p~n", [Name, Age]),
  27. Resp = rfc4627:encode({obj, [{"name", 'Hideto2'}, {"age", 24}]}),
  28. do_send(Sock,Resp),
  29. gen_tcp:close(Sock).
  30. %% send a line of text to the socket
  31. do_send(Sock,Msg) ->
  32. case gen_tcp:send(Sock, Msg) of
  33. ok -> ok;
  34. {error, Reason} -> exit(Reason)
  35. end.
  36. %% receive data from the socket
  37. do_recv(Sock) ->
  38. case gen_tcp:recv(Sock, 0) of
  39. {ok, Bin} -> binary_to_list(Bin);
  40. {error, closed} -> exit(closed);
  41. {error, Reason} -> exit(Reason)
  42. end.

Person.as

Java代码  
  1. package
  2. {
  3. public class Person
  4. {
  5. public var name:String;
  6. public var age:int;
  7. public function Person()
  8. {
  9. }
  10. }
  11. }

Client.as

Java代码  
  1. package {
  2. import com.adobe.serialization.json.JSON;
  3. import flash.display.Sprite;
  4. import flash.events.*;
  5. import flash.net.Socket;
  6. import flash.text.*;
  7. public class Client extends Sprite
  8. {
  9. private var socket:Socket;
  10. private var myField:TextField;
  11. private var send_data:Person;
  12. public function Client()
  13. {
  14. socket = new Socket();
  15. myField = new TextField();
  16. send_data = new Person();
  17. send_data.name = "Hideto";
  18. send_data.age = 23;
  19. socket.addEventListener(ProgressEvent.SOCKET_DATA, onSocketData);
  20. socket.connect("localhost", 8888);
  21. socket.writeUTFBytes(JSON.encode(send_data));
  22. socket.flush();
  23. myField.x = 20;
  24. myField.y = 30;
  25. myField.text = "test";
  26. myField.autoSize = TextFieldAutoSize.LEFT;
  27. addChild(myField);
  28. }
  29. private function onSocketData(event:ProgressEvent):void {
  30. while(socket.bytesAvailable) {
  31. var recv_data:* = JSON.decode(socket.readUTFBytes(socket.bytesAvailable));
  32. myField.text = "Name: " + recv_data.name + ", age: " + recv_data.age.toString();
  33. }
  34. }
  35. }
  36. }

运行Erlang服务器端:

Java代码  
  1. Eshell> c(server).
  2. Eshell> server:start().
  3. "{\"name\":\"Hideto\",\"age\":23}"
  4. Name: "Hideto", Age: 23

这里打印出了Erlang Socket Server接收到的AS3 Client发过来的JSON decode过的一个person对象

运行AS3客户端: 
client.html上首先显示“test”,然后异步处理完Socket消息发送和接受后,decode Erlang Server端发过来的person对象,将页面上的TextField替换为“Name: Hideto2, age: 24”

转载于:https://www.cnblogs.com/fvsfvs123/p/4192029.html

Erlang与ActionScript3采用JSON格式进行Socket通讯相关推荐

  1. Android学习笔记---26_采用JSON格式返回数据给资讯客户端,效率上要高于xml文件解析和传输

    2013-03-22 26_采用JSON格式返回数据给资讯客户端 ---------------------------------------- 1.因为在android中,使用xml格式传输数据的 ...

  2. ajax后台如何把对象转为json_57. Django 2.1.7 查询数据返回json格式

    需求问题 在日常工作中,对于前端发送过来的请求,后端django大部分都是采用json格式返回,也有采用模板返回视图的方式. 在模板返回视图的方式的确很方便,但是如果涉及到动静分离.ajax请求这类, ...

  3. Android 自定义 ListView 显示网络上 JSON 格式歌曲列表

    本文内容 环境 项目结构 演示自定义 ListView 显示网络上 JSON 歌曲列表 参考资料 本文最开始看的是一个国人翻译的文章,没有源代码可下载,根据文中提供的代码片段,自己新建的项目(比较可恶 ...

  4. php api json,PHP API接口必备之输出json格式数据实例详解

    这篇文章主要给大家介绍了关于PHP API接口必备之输出json格式数据的相关资料文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧. 前言 我们在日常的开发工 ...

  5. 对JavaScript解析JSON格式数据的理解

    对JavaScript解析JSON格式数据的理解 一.JSON与JavaScript对象的关系 1,JSON的由来: 在21世纪初,Douglas Crockford(Web开发领域最知名的技术权威之 ...

  6. java中的json_Java中Json格式总结

    Java中Json格式总结 JSON(JavaScript Object Notation) 是一种轻量级的基于文本的数据交换格式.它采用完全独立于语言的文本格式,易于读写同时也易于机器解析和生成(网 ...

  7. ApiDoc json格式提交参数

    我们默认安装的apidoc,提供了在线测试接口的功能,但是默认的参数提交是form表单提交,而我们编写的接口通常是restful的接口,一般都是采用json格式的数据提交,那我们怎么把默认的参数格式修 ...

  8. Socket开发探秘--基于Json格式的数据协议收发

    前面发表过两篇随笔:<Socket开发探秘--基类及公共类的定义>和<Socket开发探秘--数据封包和拆包>,介绍了Socket方面的开发.本文继续探讨使用Json格式来作为 ...

  9. netcore读取json文件_.net core读取json格式的配置文件

    在.Net Framework中,配置文件一般采用的是XML格式的,.NET Framework提供了专门的ConfigurationManager来读取配置文件的内容,.net core中推荐使用j ...

最新文章

  1. 【带你重拾Redis】Redis常见知识点
  2. vr体验馆项目_VR安全体验馆在江苏方洋项目推广应用啦!
  3. 吉林省计算机等级二级,吉林省2019年9月计算机等级二级考试教程:二级MSOffice高级应用上机指导...
  4. 如何使用Ubuntu打电话
  5. 你闺女都能看懂的 Kubernetes 插画指南!
  6. 经典永驻,重温设计模式 |硬核!
  7. 剑指Offer05. 替换空格
  8. [html] 请说说input的inputmode属性有什么应用场景?
  9. C++调pytorch模型的全过程记录
  10. java隔几秒发数据_java – 如何将数据推送到jsp而不是每2秒请求一次?
  11. git fetch实战以及与git pull 的区别
  12. 常用工具使用(sublimeText)
  13. SecurityError: Blocked a frame with origin from accessing a cross-origin frame
  14. C# WinForm TextBox 文本垂直居中实现
  15. 手机与电脑大文件无线传输方案
  16. 大物实验数据处理——用C求标准误差、标准偏差、标准偏差、相对误差
  17. LeetCode 青蛙跳问题
  18. mysql入门1:建表、插入、单表查询练习题1
  19. List.stream()常用的操作
  20. 企业微信如何发成绩给家长-Leo老师来教你

热门文章

  1. C语言实现一维多项式求值
  2. Oracle Number用法
  3. mysql 高并发 优惠券_转 mysql处理高并发,防止库存超卖
  4. axios post object object_Vue前端开发——数据交互axios
  5. lvm(逻辑卷--可扩展存储设备)
  6. java--内存模型
  7. 认知觉醒是成长的首因,送3本硬核认知提升书
  8. 萌新的Python练习菜鸟100例(十)暂停一秒输出,并格式化输出当前时间
  9. java系列10:ArrayList
  10. 3 | Spatial-based GNN/convolution模型之 NN4G