`

[转] flash socket与php socket通信的例子

阅读更多
http://bbs.9ria.com/viewthread.php?tid=76152&extra=page%3D1%26amp%3Borderby%3Ddateline%26amp%3Bfilter%3D2592000

使用说明:
1:把socket这个文件夹复制到硬盘,比如盘符是d:\
2:找到socket\php下面的start.bat,右键--编辑---修改盘符(这里默认地址是d:\)
3:把socket文件夹下的xx.cfg复制到C:\Documents and Settings\hui.wang\Application Data\Macromedia\Flash Player\#Security\FlashPlayerTrust下。
4:双击php\socket下的start.bat,运行服务端。可以查看服务端运行状况。
5:双击flash\load.swf运行,点击舞台,可以收到服务端数据。
6:Server.php里已经默认发送crossdomain.xml字符,防止安全沙箱冲突。
flash  代码:
package
{
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.events.IOErrorEvent;
        import flash.events.MouseEvent;
        import flash.events.ProgressEvent;
        import flash.events.SecurityErrorEvent;
        import flash.net.Socket;
        import flash.net.URLLoader;
        import flash.net.URLRequest;
        import flash.net.XMLSocket;
        import flash.text.TextField;
        import flash.utils.ByteArray;
        
        public class Load extends Sprite
        {
                
                protected var sock:Socket;
                
                protected var reads:ByteArray;
                
                protected var isConnection:Boolean;
                
                private var _tx:TextField;
                
                public function Load()
                {
                        this._init();
                        
                }
                private function _init():void
                {
                        sock=new Socket();
                        
                        sock.addEventListener(Event.CONNECT,onConnect);
                        
                        sock.addEventListener(ProgressEvent.SOCKET_DATA,onData);
                        
                        sock.addEventListener(Event.CLOSE,onClose);
                        
                        sock.addEventListener(SecurityErrorEvent.SECURITY_ERROR,onError);
                        
                        sock.addEventListener(IOErrorEvent.IO_ERROR,onIOError);
                        
                        sock.connect("localhost",4324);
                        
                        this.stage.addEventListener(MouseEvent.CLICK,onClick);
                        
                        this._tx=new TextField();
                        
                        addChild(this._tx);
                        
                        this._tx.border=true;
                        
                        this._tx.multiline=true;
                        
                }
                public function onClick(ev:MouseEvent):void
                {
                        if(this.isConnection)
                        {
                                var mes:String="flash"+Math.floor(Math.random()*1000000);
                                
                                this.sendMes(mes);
                                
                                trace("发送给服务端数据是: ",mes);
                                
                        }else
                        {
                                trace("服务未被连接!");
                        }
                }
                public function sendMes(mes:String):void
                {
                        var bytes:ByteArray=new ByteArray();
                        
                        bytes.writeUTFBytes(mes+"\n");
                        
                        bytes.position=0;
                        
                        sock.writeBytes(bytes);
                        
                        sock.flush();
                        
                }
                public function onConnect(ev:Event):void
                {
                        trace("连上服务端");
                        
                        this.isConnection=true;
                        
                }
                public function onData(ev:ProgressEvent):void
                {
                        trace("收到服务器发来的数据");
                        
                        if(sock.bytesAvailable)
                        {
                                reads=new ByteArray();
                                
                                sock.readBytes(reads);
                                
                                trace(reads);
                                
                                _tx.appendText("  "+reads);
                                
                                
                                
                        }
                }
                public function onClose(ev:Event):void
                {
                        trace("服务被关闭");
                        
                        this.isConnection=false;
                        
                }
                public function onError(ev:SecurityErrorEvent):void
                {
                        trace("沙箱错误");
                }
                public function onIOError(ev:IOErrorEvent):void
                {
                        trace("接口错误,请检查ip和端口");
                }
                
        }
}


//-------------服务端代码:
Server.php
<?php
/**
* Created on Mar 9, 2011
* @auth hui.wang
* This Class is Server
*/
class Server
{
        public $host;
        
        public $port;
        
        public $isListen=true;
        
        protected $sock;
        
        protected $bind;
        
        protected $listen;
        
        protected $connection;
        
        protected $input;
        
        protected $output;
        
        public $crossdomain;
        
        public function __construct($ip=null,$entrance=null)
        {
                $this->host=$ip;
                
                $this->port=$entrance;
                
                $this->setCrossDomain();
                
        }
        /**socket开始*/
        public function start()
        {
                $this->serverLoop();
                
        }
        /**关闭socket*/
        protected function shutdown()
        {
                socket_close($this->connection);
                
                socket_close($this->sock);
                
        }
        protected function serverLoop()
        {
                $this->sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
                
                if($this->sock)
                {
                        echo "Socket has been created \n";
                        
                        
                }else
                {
                        echo "failed to create socket".socket_strerror($this->sock)."\n";
                        
                        exit();
                        
                }
                $this->bind=socket_bind($this->sock,$this->host,$this->port);
                
                if($this->bind)
                {
                        echo "Socket has been bind \n";
                        
                }else
                {
                        echo "failed to bind socket: ".socket_strerror($this->bind)."\n";
                        
                        exit();
                }
                
                $this->listen=socket_listen($this->sock,5);
                
                if($this->listen)
                {
                        echo "Socket is listening \n";
                        
                }else
                {
                        echo "failed to listen to socket: ".socket_strerror($this->listen)."\n";
                        
                       exit();
                }
                
                echo "waiting for clients to connect \n"; 
                
                while($this->isListen)
                {
                        $this->connection=socket_accept($this->sock);
                        
                        if(!$this->connection)
                        {
                                usleep(100); 
                                
                        }else if($this->connection>0)
                        {
                                echo "A connection...\n";
                                
                                $this->handleClient();
                                
                        }
                        
                }
                $this->shutdown();
                
        }
        /**设置crossdomain.xml字符串*/
        protected final function setCrossDomain()
        {
                $this->crossdomain="<cross-domain-policy>" .
                                                        "<allow-access-from domain='*' to-ports='*' />" .
                                                        "</cross-domain-policy>" .
                                                        "\0";
        }
        /**处理客户端*/
        protected function handleClient()
        {
                while($this->input=socket_read($this->connection,2048))
                {
                        if(strpos($this->input,'policy-file-request'))
                        {
                                socket_write($this->connection,$this->crossdomain,strlen($this->crossdomain));
                                
                        }else
                        {
                                $this->input=trim($this->input);
                        
                                echo "Recived mes: ".$this->input."\n";
                        
                                $this->output=strrev($this->input)."\n";
                        
                                echo "Back to client mes:(len is ".strlen($this->output).") ".$this->output."\n";
                        
                                socket_write($this->connection,$this->output,strlen($this->output))or die("Could not write output\n");
                        }
                        
                }
                socket_close($this->connection);
                
        }
        
}
?>


start.php代码
<?php
/*
* Created on Mar 9, 2011
* @auth hui.wang
*/
include_once 'Server.php';

$server=new Server("localhost",4324);

$server->start();

?>



分享到:
评论

相关推荐

    用php的socket跟flash的socket通信

    ### 使用 PHP 的 Socket 与 Flash 的 Socket 进行通信 #### 一、PHP 的 Socket 编程基础 在本文档中,PHP 的 Socket 编程主要用于实现与 Flash 的 Socket 进行通信。PHP 的 Socket 编程相对较少被提及,但仍然是一...

    使用Flash的Socket与C++实现网络通信

    总的来说,这个项目展示了如何使用Flash Socket与C++服务端实现基本的网络通信。虽然这里没有提供具体的代码,但通过理解Socket的工作原理和网络通信的基本概念,我们可以想象出实现这一功能的步骤。无论是客户端...

    flash actionscript3 as3通信 教程 socket与服务器通信, 多个swf之间通信.zip

    flash actionscript3 as3通信 教程 socket与服务器通信, 多个swf之间通信.zip

    flash socket通信

    flash socket通信

    Flash与JAVA的Socket通信

    Flash与Java的Socket通信是两种不同平台之间进行实时数据传输的一种技术,常用于构建富互联网应用程序(RIA)。本篇将深入探讨Flash与Java通过Socket接口实现通信的原理、步骤及其实现方法。 首先,我们需要了解...

    c#与flash进行socket通信

    在IT行业中,C#与Flash之间的Socket通信是一个重要的技术领域,尤其在开发跨平台、实时交互的应用时。本文将深入探讨如何使用C#作为服务器端,Flash作为客户端,通过Socket进行安全通信,并利用Flash的沙箱机制来...

    c# socket 异步通信 例子

    在.NET编程环境中,C#语言提供了强大的网络通信支持,其中Socket是核心的网络通信组件。本示例将探讨如何在C#中实现基于Socket的异步通信,这在VS2005环境下已经通过了调试。异步通信是提高应用程序性能和响应能力的...

    iphone Socket通信例子

    在这个“iPhone Socket通信例子”中,我们将探讨如何在iOS(iPhone)平台上利用Socket进行数据传输,以及与Mac平台上的服务端进行交互。首先,我们需要理解Socket的基本概念。 Socket,又称为套接字,是网络通信的...

    PHP的Socket通信

    #### Socket与TCP/UDP的关系 Socket本身并不属于TCP或UDP协议的一部分,但它提供了与这些协议交互的接口。具体而言: - **TCP(Transmission Control Protocol,传输控制协议)**:这是一种面向连接且可靠的协议,...

    socket通信代码 点到点通信

    Socket通信是一种基于网络协议(如TCP/IP)进行进程间通信的技术,它允许两台计算机通过互联网交换数据。在本文中,我们将深入探讨“点到点通信”中的Socket通信代码,包括服务端和客户端的实现。 首先,让我们了解...

    FlashSocket与C#通讯

    "FlashSocket与C#通讯"是一个关键的主题,涉及到客户端与服务器之间的低延迟、双向通信。以下是关于这个主题的详细解释: FlashSocket,全称Adobe Flash Socket,是Adobe Flash Player支持的一种高级网络功能,它...

    socket编程 经过验证的通信例子

    本篇将围绕"socket编程 经过验证的通信例子"这一主题,深入讲解socket编程的基本概念、工作原理以及如何在Windows环境下使用VS2005进行实际应用。 首先,我们了解什么是Socket。Socket在操作系统层面上是一种接口,...

    c++做的异步通信,使用socket的典型例子

    2. **绑定与监听**:使用`bind()`函数将socket与本地地址关联,然后用`listen()`函数设置最大连接队列长度,使socket变为监听状态。 3. **接收连接**:使用`accept()`函数异步接收客户端的连接请求。当有新的连接...

    C#利用Socket实现客户端之间直接通信

    客户端之间直接通信,C与C之间直接通信(不是通过S传递)。 --------------------- 本文来自 ybhjx 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/ybhjx/article/details/53706658?utm_source=copy

    xcode与flash通过socket进行通信

    本文将深入探讨如何使用Socket进行Xcode与Flash之间的通信,以及解决通过网页调用时遇到的两次连接问题。 首先,Socket是网络编程中的基本概念,它提供了一种端到端的数据通信方式,允许两个应用程序通过TCP或UDP...

    C#的Socket实现UDP协议通信

    标题和描述中的知识点聚焦于如何使用C#的Socket类实现UDP协议通信,这涉及到了UDP协议的基本特性以及在C#中的具体实现方法。以下是对这一主题的深入解析: ### UDP协议简介 用户数据报协议(UDP)是互联网协议族中...

    c++ socket通信库

    - **连接Socket**: 客户端使用`connect()`函数尝试与服务器建立连接,服务器端则使用`accept()`函数接收连接请求并返回新的套接字用于后续通信。 - **发送数据**: `send()`或`write()`函数用于向连接的套接字发送...

    C# Socket简单例子(服务器与客户端通信).zip_C# socket实例_firmxbl_socket

    C# Socket简单例子(服务器与客户端通信)

    FlashSocket.IO-0.7.x.zip

    《FlashSocket.IO-0.7.x.zip:Flex与Socket.IO通信的桥梁》 在现代Web开发中,实时性成为了一项重要的需求,特别是在构建交互性强的网页应用时。FlashSocket.IO-0.7.x.zip是一个专门针对这种情况设计的库,它为Flex...

Global site tag (gtag.js) - Google Analytics