Socket 套接字连接允许Flash播放器通过指定的端口与服务器通信,但是socket通讯在数据传输完毕后仍然不会关闭,要人为的关闭。我们可以使用flash.net.XMLSocket类创建XML数据格式的socket连接,使用flash.net.Socket类创建二进制数据格式socket连接,相比xml数据格式,二进制链接更低级,但是它可以连接到几乎所有的socket服务器端程序。as3.0 中的提供的socket链接都是异步的,也就是说你必须增加事件侦听在传输完数据以后才可以获得

要建立socket通讯,首先要建立socket连接,我们可以使用Socket.connect( )或XMLSocket.connect( )方法建立连接并监听connect事件确定连接是否建立。连接只需要2个参数,IP,和端口。

注意条件:

swf 和主机必须在同一个域;
网络上的swf不能连接本地服务器;
本地的swf 不能访问任何网络资源;
要允许域名交叉访问或连接低于1024的端口,需要提供cross-domain 策略文件。

如果要不同域中的flash相互访问可以通过flash.system.Security.loadPolicyFile( )读取:
Security.loadPolicyFile("cross-domain");
cross-domain策略文件例子:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domainpolicy.
dtd">
<cross-domain-policy>
<allow-access-from domain="*" to-ports="80,110" />
</cross-domain-policy>

建立完连接后就可以对服务器进行写入,通过调用write方法,可以写把数据写入缓冲池中,然后在调用flush()方法就可以把数据发送出去,这里是针对二进制的socket,如果是xml请调用send()方法。as3.0可以通过对不同的参数定义不同的写入函数:是writeBoolean( ), writeByte( ), writeBytes( ),
writeDouble( ), writeFloat( ), writeInt( ), writeMultiByte( ), writeObject( ), writeShort( ), write-
UnsignedInt( ), writeUTF( ), 和writeUTFBytes( ) 。根据函数名就可以知道需要传入的参数,这里就对socket.writeBytes(byteArray, 0, byteArray.length);进行说明,因为它可以传递一个数据 ,并制定数组的开始和结束位置进行写入。,writeUTFBytes( ):写入字节型的字符串,writeUTF:数字型的字符串。writeMultiByte()以指定编码写入字符串,socket.writeMultiByte("example", "unicode");

发送完数据后就要接受数据,因此我们可以通过ProgressEvent.SOCKET_DATA事件处理函数中读取数据,利用readBoolean():Boolean,readByte():int,readDouble():Number,readFloat():Number,readInt():int,readObject():*,readShort():int,readUnsignedByte():uint,readUnsignedInt():uint,readUnsignedShort():uint,readUTF():String,readBytes()无返回参数,readUTFBytes( )返回utf8数据。Socket对象接收的数据都是ASCII编码的文本,我们可以用readUTFBytes( )方法重新构造字符串,
readUTFBytes( )方法需要知道有多少个字节需要转换,用bytesAvailable属性指定字节数:
var string:String = socket.readUTFBytes(socket.bytesAvailable);

以上提到的是采用二进制的socket传输方式,如果采用xml的方式,那么触发的事件类型不同,它触发的是DataEvent.DATA事件,事件的data属性中包含传递来的数据,如果我们要读取xml就必须先将data中的字符串转换为xml格式,然后进行读取。

转自http://520pig.blogbus.com/logs/32821429.html

转载于:https://www.cnblogs.com/moondev/archive/2013/01/21/2869822.html

AS 3.0 socket 通信,比较基础比较全【转载】相关推荐

  1. C#通信之Socket通信的简单例子

    socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过"套接字"向网络发出请求或者应答网络请求. 这里构建一个简单的例子 ...

  2. socket通信需要网线连接吗_socket网络编程基础知识篇

    网络通信是一种进程间通信(IPC, Inter-Process Communication),要求位于不同网络节点不同进程的通信双方必须遵循统一的通信协议方可实现.基于套接字(Socket)通信是应用 ...

  3. 【Java从0到架构师】分布式框架通信核心基础 - 序列化(JDK、Protobuf)、远程过程调用 RMI

    分布式框架通信核心基础 序列化 JDK 的序列化 JDK 序列化的一些细节 Protobuf 序列化 Protobuf 环境搭建与操作 Protobuf 原理分析 实际数据传输 序列化技术选型 远程过 ...

  4. socket 通信 封装 协议 基础

    Big Endian && Little Endian endian 字节存储次序 端模式 Big Endian 是低端地址存放最高有效字节(MSB) Little Endian 低端 ...

  5. python udp创建addr_python高级:8.socket通信part1

    0.前言 如果可以的话,请先关注(专栏和账号),然后点赞和收藏,最后学习和进步.你的支持是我继续写下去的最大动力,个人定当倾囊而送,不负众望.谢谢!!! 1.前提 基于win10专业版64位系统+64 ...

  6. Android10.0 Binder通信原理(一)Binder、HwBinder、VndBinder概要

    摘要:本节主要来讲解Android10.0 Binder.HwBinder.VndBinder的关联与各自作用 阅读本文大约需要花费10分钟. 文章首发微信公众号:IngresGe 专注于Androi ...

  7. .net平台下C#socket通信(上)

    .net平台下C#socket通信(上) 完全是基础,新手可以随意看看,大牛可以关闭浏览页了,哈哈. 在开始介绍socket前先补充补充基础知识,在此基础上理解网络通信才会顺理成章,当然有基础的可以跳 ...

  8. 树莓派与Android客户端进行socket通信

    转自:https://blog.csdn.net/lj779323436/article/details/79911322 我在此基础上时间并进行了些许修正. 先在树莓派上创建热点: https:// ...

  9. connect: 网络不可达_Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制

    本文转自:https://github.com/jasonGeng88/blog 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https ...

  10. 深入浅出讲解:php的socket通信

    对TCP/IP.UDP.Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵.那么我想问: 1.         什么是TCP/IP.UDP? 2.         Soc ...

最新文章

  1. 3D目标检测深度学习方法之voxel-represetnation内容综述(二)
  2. mysql范式与反范式_给女同事讲解MySQL数据库范式与反范式,她直夸我“技术好”...
  3. solr4.5分组查询、统计功能介绍
  4. 《PHP开发入行真功夫》
  5. 测带宽的工具_iperf:服务端吞吐量测试工具
  6. Resource interpreted as Stylesheet but transferred with MIME type application/x-css
  7. IPC进程间通信 D-Bus(Desktop Bus)快速入门(以libdbus-glib库为例)
  8. shell脚本执行php文件_分享两个shell脚本实例--批量生成随机字符文件名和批量改名...
  9. inode索引节点---初识
  10. leetcode - 141. 环形链表(哈希表)
  11. javaScripct入门教程
  12. SQLServer之创建Transact-SQL DDL触发器
  13. 单片机——电子密码锁设计报告
  14. 相机存储卡格式化了数据能恢复吗,相机储存卡数据误删如何恢复
  15. 三维重建:基于RGB-D相机的三维重建总览(静态动态)
  16. Adolescent Architecture
  17. 万物可运算——运算符重载(四)
  18. leetcode 39. Combination Sume (medium)
  19. linux把光盘复制成ISO文件方法
  20. 知乎版ChatGPT「知海图AI」加入国产大模型乱斗,称效果与GPT-4持平

热门文章

  1. 推荐!手把手教你使用Git(转)
  2. 引擎工具开发的一些总结
  3. 25 条 SSH 命令和技巧
  4. 学java后学python,宁波学习java还是python(孩子学Python怎么样)
  5. Python中函数的用法
  6. 怎么做应力应变曲线_金属薄板塑性应变比ISO 10113:2020 解读
  7. macos安装vscode_什么!你还没有安装Flutter!
  8. 锋锋5日一更正式开始2021-1-5
  9. 【渝粤教育】国家开放大学2019年春季 2766养羊技术 参考试题
  10. 【渝粤教育】国家开放大学2018年秋季 0463-21T英语语音 参考试题