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>
如下為本文示例程序測試結果圖
From:http://tw.wingwit.com/Article/program/net/201311/12700.html