手机
当前位置:查字典教程网 >网页设计 >Flash教程 >ActionScript 3.0中用XMLSocket与服务器通讯程序(源码)
ActionScript 3.0中用XMLSocket与服务器通讯程序(源码)
摘要:复制代码代码如下:////CXMLSocket.as//////WrittenbyLeezhm,20thOct,2008//Contact:...

复制代码 代码如下:

//

// CXMLSocket.as

//

//

// Written by Leezhm, 20th Oct, 2008

// Contact : Leezhm@luxoom.cn

//

package

{

import flash.events.DataEvent;

import flash.events.Event;

import flash.events.IEventDispatcher;

import flash.events.IOErrorEvent;

import flash.events.ProgressEvent;

import flash.events.SecurityErrorEvent;

import flash.net.XMLSocket;

import flash.system.Security;

public class CXMLSocket extends XMLSocket

{

// declare variables

private var mHostName:String = "127.0.0.1";

private var mPort:int = 7654;

private var mStrRecvBuf:String;

// constructor

public function CXMLSocket():void

{

//ConfigNetEvent(this);

Connect();

}

public function Connect():void

{

var xmlStr:String = "xmlsocket://";

xmlStr += mHostName;

xmlStr += ":";

xmlStr += mPort;

Security.loadPolicyFile(xmlStr);

trace(xmlStr);

ConfigNetEvent(this);

this.connect(mHostName, mPort);

}

private function ConfigNetEvent(dispatcher:IEventDispatcher):void

{

dispatcher.addEventListener(Event.CONNECT, OnConnect);

dispatcher.addEventListener(Event.CLOSE, OnClose);

dispatcher.addEventListener(DataEvent.DATA, OnSocketData);

dispatcher.addEventListener(IOErrorEvent.IO_ERROR, OnIOError);

dispatcher.addEventListener(ProgressEvent.PROGRESS, OnProgress);

dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, OnSecurityError);

}

private function OnConnect(ArgEvent:Event):void

{

trace("OnConnect--->" + ArgEvent);

this.send("Connected");

}

private function OnClose(ArgEvent:Event):void

{

trace("OnClose--->" + ArgEvent);

}

private function OnSocketData(ArgEvent:DataEvent):void

{

trace(ArgEvent.text);

}

private function OnIOError(ArgEvent:IOErrorEvent):void

{

trace("OnIOError--->" + ArgEvent.text);

}

private function OnProgress(ArgEvent:ProgressEvent):void

{

trace("OnProgress--->" + ArgEvent.bytesLoaded +

" Total:" + ArgEvent.bytesTotal);

}

private function OnSecurityError(ArgEvent:SecurityErrorEvent):void

{

trace("OnSecurityError--->" + ArgEvent);

}

}

}

基于C++的服务器源码:

复制代码 代码如下:

// Server.cpp : implementation file

//

#include "stdafx.h"

#include "Server.h"

#include "SerialPort.h"

extern CSerialPort m_Ports;

// CServer

extern CPtrArray gSocketArr;

extern bool gbIsConnected;

CServer::CServer():mStrSendBuf("")

{

//bIsConnectFlash = false;

}

CServer::~CServer()

{

}

// CServer member functions

void CServer::OnAccept(int nErrorCode)

{

// TODO: Add your specialized code here and/or call the base class

if(0 == nErrorCode)

{

CServer * pSocket = new CServer();

if(SOCKET_ERROR != this->Accept(*pSocket))

{

gSocketArr.Add(pSocket);

}

else

{

::AfxMessageBox(_T("Accept->Error"));

}

pSocket = NULL;

}

CAsyncSocket::OnAccept(nErrorCode);

}

void CServer::OnReceive(int nErrorCode)

{

// TODO: Add your specialized code here and/or call the base class

if(0 == nErrorCode)

{

char buf[30] = {0};

int nRead = this->Receive(buf, 30);

if(0 != nRead && SOCKET_ERROR != nRead)

{

//

// debug info

//

std::fstream debug;

debug.open(_T("Debug.txt"), std::ios::app);

int yvalue;

if(debug.is_open())

{

debug<<buf<<"n";

yvalue = atoi(buf);

//m_Ports.WriteToPort(

}

debug.close();

if(0 == strcmp("<policy-file-request/>", buf))

{

std::string strXML = "<cross-domain-policy>";

strXML += "<allow-access-from domain="*"to-ports="*"/>";

//strXML += "<allow-access-from domain="localhost"to-ports="1025,9999"/>";

strXML += "</cross-domain-policy>";

strXML += "";

this->Send(strXML.c_str(), (int)strXML.length() + 1);

gbIsConnected = true;

}

else if(0 == strcmp("Connected", buf))

{

////::AfxMessageBox(_T("Hello"));

gbIsConnected = true;

}

}

}

CAsyncSocket::OnReceive(nErrorCode);

}

void CServer::SendData()

{

if(0 == gSocketArr.IsEmpty())

{

for(int i = 0; i < gSocketArr.GetSize(); i++)

{

((CServer *)gSocketArr[i])->Send(mStrSendBuf.c_str(), (int)mStrSendBuf.length() + 1);

}

std::fstream debug;

debug.open(_T("Debug.txt"), std::ios::app);

int yvalue;

if(debug.is_open())

{

debug<<mStrSendBuf<<"n";

}

debug.close();

}

else

{

::AfxMessageBox(_T("Socket Error"));

}

}

注意服务器端程序是继承了MFC中CAsyncSocket的一个异步socket类

【ActionScript 3.0中用XMLSocket与服务器通讯程序(源码)】相关文章:

Flash AS2代码实例:实现鼠标感应放大或缩小图片动画效果

Flash AS3.0构建声音可视化程序(波形图)教程

falsh 跨域调用配置

如何控制Flash文件的最终体积大小

flash as3生成XML文件实现程序

Flash CS4打造星光四射的莲花实例教程

Flash制作旋转的花朵

Flash AS 教程:帧循环

ActionScript3.0中建立帧频计数器的方法

Flash制作描边立体文字

精品推荐
分类导航