Flash AS3.0 Socket资源(1)——与Socket服务器建立连接

转载 2011年04月08日 16:06:00

我们在使用ActionScript3.0进行Socket编程的时候需要关注下面的问题,我们将在今后的学习中逐个对下面的问题进行讨论,并尽量逐渐的改进我们的程序.
1.与Socket服务器建立连接.
2.向Socket服务器发送数据.
3.从Socket服务器读数据.
4.同Socket服务器进行握手,并确定收到了什么样的数据和如何处理这些数据.
5.与Socket服务器断开,或者当服务器想与你断开的时候发消息给你.
6.处理使用Sockets时候引发的错误.


与Socket服务器建立连接.

解决方法:
我们通过调用Socket.connect( )或者XMLSocket.connect( )方法并监听网络连接的事件消息.

讨论:
连接一台Socket服务器你需要确定两个信息,一个是Socket服务器的域名或者IP地址,另一个是服务器监听的端口号.
无论你使用的是Socket还是XMLSocket类的实例,连接请求都是完全的一样的,两个类都是使用一个名叫connect()的方法,该方法有两个参数:
host :
该参数为字符串类型,可以是一个域名,例如"www.example.com",也可以是一个IP地址,例如"192.168.1.101".如果Socket服务器与你该Flash影片发布的Web服务器是同一个,该参数为Null.
port :
该参数为一个表示Socket服务器监听端口的int值.该值最小为1024.除非在服务器中有一个policy文件,用于指定允许端口号小于1024.
因为Flash Socket编程是一个异步的过程,connect()方法不会等到一个连接完成后再执行下一行代码的执行.如果你想在一个连接完全执行完之前与一个Socket完全绑定,那么你将会得到一个意想不到的结果,并且你当前的代码将不能工作.
在尝试一个新的Socket连接的时候我们最好先添加一个连接事件监听器.当一个连接建立成功,Socket或者XMLSocket会发出一个连接事件,这就可以让你知道交互已经准备好了.
下面举了一个Socket实例与本地Socket服务器的2900端口建立连接的例子:

如果你想通过XMLSocket与服务器建立连接代码也是基本一样的.首先你创建了一个连接事件监听器,然后调用connect()方法.所不同的是Socket实例改为了XMLSocket:

如果连接失败,可那是下面两种原因的一种:一种是连接立即失败和运行时错误,另一种是如果无法完成连接从而产生一个ioError或者securityError事件.关于错误事件处理信息的描述,我们打算改日讨论.
请牢记,当与一个主机建立一个Socket连接时,Flash Player要遵守如下安全沙箱规则.
1.Flash的.swf文件和主机必须严格的在同一个域名,只有这样才可以成功建立连接.
2.一个从网上发布的.swf文件是不可以访问本地服务器的.
3.本地未通过认证的.swf文件是不可以访问任何网络资源的.
4.你想跨域访问或者连接低于1024的端口,必须使用一个跨域策略文件.
如果尝试连接未认证的域或者低端口服务,这样就违反了安全沙箱策略,同时会产生一个securityError事件.这些情况都可以通过使用一个跨域策略文件解决.无论是Socket对象还是XMLSocket对象的策略文件,都必须在连接之前通过使用 flash.system.Security.loadPolicyFile()方法载入策略文件.具体如下:
Security.loadPolicyFile("http://www.rightactionscript.com/crossdomain.xml");
获得的改策略文件不仅定义了允许的域名,还定义了端口号.如果你不设置端口号,那么Flash Player默认为80端口(HTTP协议默认端口).在<allow-access-from>标签中可以使用逗号隔开设置多个端口号.下面这个例子就是允许访问80和110端口.

<?xml version="1.0"?>

<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" to-ports="80,110" />
</cross-domain-policy>

AS3 Socket 基础知识(很全面)

在讲AS3 Socket之前我们先来搞清几个概念,这有助于我们更加了解网络通信! 1、网络中进程之间如何通信? 首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通...
  • tao_627
  • tao_627
  • 2014年01月16日 16:33
  • 3769

flash与c++进行Socket进行简单通信

一、简介       用flash去开发应用,,免不了网络通讯,特别是网络游戏,需要用到即使通讯。 as3提供了两个支持即时通讯的类:XMLSocket和Socket,       前者其实是只支持发...
  • u010150082
  • u010150082
  • 2013年10月29日 17:07
  • 1682

socket服务器和客户端的建立步骤

转自http://blog.csdn.net/wenwen227/archive/2008/12/17/3543497.aspx TCP编程的服务器端一般步骤是: 1、创建一个socket,用函数...
  • a58220655
  • a58220655
  • 2015年06月17日 15:38
  • 8101

Flash AS3.0 Socket资源(2)——向Socket服务器发送数据

2.向Socket服务器发送数据. 解决方法: 对于Socket对象来说,通过是用write方法(writeByte(),writeUTFBytes( )等方法.)先向缓存区写入数据,然后使用flus...
  • yaonai2003
  • yaonai2003
  • 2011年04月08日 16:10
  • 6467

Flash AS3.0 Socket资源(5)——与Socket服务器断开

5.与Socket服务器断开,或者当服务器想与你断开的时候发消息给你.解决方法:通过调用Socket.close( )或者XMLSocket.close( )方法显性的断开与服务器的连接.同时可以通过...
  • yaonai2003
  • yaonai2003
  • 2011年04月08日 16:17
  • 4849

Flash AS3.0 Socket资源(6)——处理使用Sockets时候引发的错误.

6.处理使用Sockets时候引发的错误.解决方法:使用try/catch处理I/O和EOF(end of file)错误.讨论:Socket和XMLSocket类对错误的处理很类似.不如,当调用co...
  • yaonai2003
  • yaonai2003
  • 2011年04月08日 16:18
  • 2160

flash as 3 socket资源(4)——同Socket服务器进行握手

4.同Socket服务器进行握手,并确定收到了什么样的数据和如何处理这些数据.解决方法:创建不同的常量来声明协议的状态.使用这些常量将指定的处理函数映射到相应的状态.在一个socketData事件控制...
  • yaonai2003
  • yaonai2003
  • 2011年04月08日 16:15
  • 1304

Flash Socket 底层接受数据的初级处理(as3.0)

flash去开发应用,,免不了网络通讯,特别是网络游戏,需要用到即使通讯。 as3提供了两个支持即时通讯的类:XMLSocket和Socket,前者其实是只支持发送字符串,而后者就强大多了,支持发送字...
  • MeetLunay
  • MeetLunay
  • 2012年02月10日 15:25
  • 2057

Flash Socket 底层接受数据的初级处理(as3.0)

flash去开发应用,,免不了网络通讯,特别是网络游戏,需要用到即使通讯。 as3提供了两个支持即时通讯的类:XMLSocket和Socket,前者其实是只支持发送字符串,而后者就强大多了,支持发送字...
  • merryken
  • merryken
  • 2012年04月01日 00:18
  • 533

【转】Flash AS3.0 Socket编程

我们在使用ActionScript3.0进行Socket编程的时候需要关注下面的问题,我们将在今后的学习中逐个对下面的问题进行讨论,并尽量逐渐的改进我们的程序. 1.与Socket服务器建立连接. 2...
  • u014059003
  • u014059003
  • 2015年01月13日 09:42
  • 381
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Flash AS3.0 Socket资源(1)——与Socket服务器建立连接
举报原因:
原因补充:

(最多只允许输入30个字)