下例对套接字执行读写操作,并输出在套接字事件期间传输的信息。 该示例的要点遵循:

  1. 该构造函数创建名为 socketCustomSocket 实例,并将主机名 localhost 和端口 80 作为参数传递。 由于 CustomSocket 扩展了 Socket,因此在调用 super() 时将调用 Socket 的构造函数。
  2. 然后,该示例调用了 configureListeners() 方法,该方法可为 Socket 事件添加侦听器。
  3. 最后,调用套接字 connect() 方法,其中使用 localhost 作为主机名并使用 80 作为端口号。

注意:若要运行该示例,您需要一台与 SWF 位于同一个域(在本例中为 localhost)服务器并侦听端口 80。

 package
{
import flash.display.Sprite; /**
* @author Frost.Yen
* @E-mail 871979853@qq.com
* @create 2015-8-21 下午2:53:03
*
*/
public class SocketExample extends Sprite
{
public function SocketExample()
{
var socket:CustomSocket = new CustomSocket("localhost", 80); }
}
}
import flash.errors.*;
import flash.events.*;
import flash.net.Socket; class CustomSocket extends Socket {
private var response:String; public function CustomSocket(host:String = null, port:uint = 0) {
super();
configureListeners();
if (host && port) {
super.connect(host, port);
}
} private function configureListeners():void {
addEventListener(Event.CLOSE, closeHandler);
addEventListener(Event.CONNECT, connectHandler);
addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);
} private function writeln(str:String):void {
str += "\n";
try {
writeUTFBytes(str);
}
catch(e:IOError) {
trace(e);
}
} private function sendRequest():void {
trace("sendRequest");
response = "";
writeln("GET /");
flush();
} private function readResponse():void {
var str:String = readUTFBytes(bytesAvailable);
response += str;
} private function closeHandler(event:Event):void {
trace("closeHandler: " + event);
trace(response.toString());
} private function connectHandler(event:Event):void {
trace("connectHandler: " + event);
sendRequest();
} private function ioErrorHandler(event:IOErrorEvent):void {
trace("ioErrorHandler: " + event);
} private function securityErrorHandler(event:SecurityErrorEvent):void {
trace("securityErrorHandler: " + event);
} private function socketDataHandler(event:ProgressEvent):void {
trace("socketDataHandler: " + event);
readResponse();
}
}

[ActionScript 3.0] AS3 socket示例(官方示例)的更多相关文章

  1. [ActionScript 3.0] AS3 Socket安全沙箱策略文件

    当与一个主机建立一个Socket连接时,Flash Player要遵守如下安全沙箱规则: 1.Flash的.swf文件和主机必须严格的在同一个域名,只有这样才可以成功建立连接: 2.一个从网上发布的. ...

  2. [ActionScript 3.0] as3处理xml的功能和遍历节点

    as3比as2处理xml的功能增强了N倍,获取或遍历节点非常之方便,类似于json对像的处理方式. XML 的一个强大功能是它能够通过文本字符的线性字符串提供复杂的嵌套数据.将数据加载到 XML 对象 ...

  3. [ActionScript 3.0] AS3.0 动态加载显示内容

    可以将下列任何外部显示资源加载到 ActionScript 3.0 应用程序中: 在 ActionScript 3.0 中创作的 SWF 文件 — 此文件可以是 Sprite.MovieClip 或扩 ...

  4. [ActionScript 3.0] AS3 ServerSocket示例(官方示例)

    下面的示例创建一个套接字服务器.要使用该服务器,可将套接字绑定到本地端口,然后从其他应用程序连接到该端口.该服务器仅识别 UTF-8 字符串. package { import flash.displ ...

  5. [ActionScript 3.0] AS3.0 简单封装Socket的通信

    Socket服务器 package com.controls.socket { import com.models.events.AppEvent; import com.models.events. ...

  6. [ActionScript 3.0] AS3.0 Socket通信实例

    以下类是充当Socket服务器的例子 package { import flash.display.Sprite; import flash.events.Event; import flash.ev ...

  7. [ActionScript 3.0] AS3.0 本机鼠标指针

    Flash Player 10.2添加了内置的本机鼠标指针(native mouse cursor)支持,虽然在之前的版本里我们可以侦听MouseEvent事件来模拟鼠标指针,但是在有了原生的本机鼠标 ...

  8. [ActionScript 3.0] AS3 深入理解Flash的安全沙箱Security Domains

    简介 如果你还没有与复杂的的安全域(security domain)和应用程序域(application domain)问题打过交道,那么你真是个幸运的家伙.当你在加载外部内容(然后他们开始播放)的时 ...

  9. [ActionScript 3.0] AS3调用百度天气预报查询API

    接口说明 根据经纬度/城市名查询天气的结果 接口示例 http://api.map.baidu.com/telematics/v3/weather?location=成都&output=jso ...

随机推荐

  1. Slim安装以及使用【转】

    最近在用backbone.js 做东西,因为牵扯到REST services 所以需要后台支持,此处选择了php.Slim 是php的一个框架. 貌似国内文章对此的介绍比较少,在安装Slim的过程中出 ...

  2. 【BZOJ2038】小Z的袜子【莫队】

    题意 给出包含n个数字的序列,和m个查询.每次查询问区间[l,r]中挑选出两个数字,大小相同的概率为多少. 分析 莫队的入门题吧.代码是非常好写,关键是时间复杂度的证明.O(n*sqrt(n)).我还 ...

  3. Mysql 查询今天的某些时间之外的数据

    SELECT * FROM `attendancealert` WHERE DATE_FORMAT(FROM_UNIXTIME(UNIX_TIMESTAMP(`AlertTime`)),'%Y-%m- ...

  4. Codeforces 667C DP

    题意:给你一个字符串,这个字符串的构造方法如下:先选择一个长度大于4的前缀,然后每次向字符串尾部添加一个长度为2或者长度为3的后缀,不能添加连续的相同的后缀,问可能的后缀有哪些?并按字典序输出去. 思 ...

  5. NSArray & NSDictionary

    一.NSArray 1.1 简单创建方法由难到简 NSArray *arr = [[NSArray alloc] init]; NSArray *arr = [NSArray arrayWithObj ...

  6. JAVA的StringBuffer类[转]

    StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存 ...

  7. Boost智能指针使用总结

    内存管理是一个比较繁琐的问题,C++中有两个实现方案: 垃圾回收机制和智能指针.垃圾回收机制因为性能等原因不被C++的大佬们推崇, 而智能指针被认为是解决C++内存问题的最优方案. 1. 智能指针定义 ...

  8. Mac/win下的docker容器和LAMP环境的安装(亲测)

    docker直接在官网下载就行了无需赘述 接下来就是在终端中运行docker docker ps 显示当前运行的容器 docker images 显示以及装在的镜像 接下来我们安装centos镜像 d ...

  9. java Random类和Math.Rondom

      Java中存在着两种Random函数: 一.java.lang.Math.Random; 调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取 ...

  10. ContextLoaderListener和Spring MVC中的DispatcherServlet学习 随手记

    Servlet上下文关系 DispatcherServlet的上下文是通过配置servlet的contextConfigLocation来加载的,默认实现是XmlWebApplicationConte ...