Flash/Flex也支持基于Socket的网络连接 服务器端可以是C++VBC#Java等任一语言开发监听一个网络端口便可以接收到Flash/Flex开发的客户端的连接
ActionScript 提供了通过Socket连接的方式与服务器端通信这点是超越传统B/S结构的重要特征这样使得网络通信可以即时连接避免了HTTP协议无状态连接的弊病ActionScript 使用XMLSocket类进行连接需要注意的是使用XMLSocket类进行Socket连接时不能自动穿过防火墙要想穿过防火墙连接则需要使用基于HTTP协议的RTMP协议
通过查阅Adobe提供的API文档可以了解到XMLSocket提供了四个公开方法:
XMLSocket(host:String=nullport:int=)创建一个新的XMLSocket对象
close():void关闭一个XMLSocket
connect(host:Stringport:int):void连接到指定的TCP端口
send(object:*):void将数据发送到连接服务端
OK了解这些后我们就可以用XMLSocket来开发基于Socket的网络及时通信应用下面通过C#提供一个Socket的服务端并监听端口示例程序如下
using System;
using SystemCollectionsGeneric;
using SystemLinq;
using SystemText;
using SystemNetSockets;
using SystemIO;
namespace FlashFlexDotNet
{
class Program
{
static void Main(string[] args)
{
TcpListener listener;
try
{
listener = new TcpListener();
}
catch (Exception ex)
{
ConsoleWriteLine(exMessage);
return;
}
listenerStart();
ConsoleWriteLine(服务器启动等待客户端连接);
bool loop = true;
while (loop)
{
Socket s = listenerAcceptSocket();
NetworkStream ns = new NetworkStream(s);
StreamReader reader = new StreamReader(ns);
string result = stringEmpty;
try
{
result = readerReadLine();
ConsoleWriteLine(result);
}
catch (Exception ex)
{
ConsoleWriteLine(exMessage);
}
}
}
}
}
服务器端Socket已经准备完毕下面看看客户端的ActionScript的XMLSocket怎么来建立Socket连接的Socket服务端进行通信
如本文前介绍ActionScript 提供了基于Socket的网络连接类XMLSocket
我们可以直接使用它来开发基于Socket的网络通信如下建立一个基与ActionScript 提供的XMLSocket的网络连接
private function connectionServer():void
{
xmlConn = new XMLSocket();
nnect();
}
随后便可以通过XMLSocket的实例方法send()向Socket服务端发送消息了如下代码定义
private function onSend():void
{
xmlConnsend(txtDatatext + \n);
}
客户端完整代码
<?xml version= encoding=utf?>
<mx:Application xmlns:mx= layout=absolute
backgroundGradientAlphas=[ ]
backgroundGradientColors=[#CDCAE #FFFFFF]>
<mx:Script>
<![CDATA[
import ntrolsAlert;
private var xmlConn:XMLSocket;
private function connectionServer():void
{
xmlConn = new XMLSocket();
nnect();
}
private function onSend():void
{
xmlConnsend(txtDatatext + \n);
}
]]>
</mx:Script>
<mx:TextArea x= y= height= width= id=txtData/>
<mx:Button x= y= label=连 接 fontSize= click=connectionServer()/>
<mx:Button x= y= label=发 送 fontSize= click=onSend()/>
<mx:Application>
如下为本文示例程序测试结果图