php5与flash的Socket编程

php5代码:
<?php
error_reporting(E_ALL);
set_time_limit(0);     //设置不限制超时

/* Turn on implicit output flushing so we see what we're getting
* as it comes in. */
ob_implicit_flush();

//服务器ip和端口
$address = '127.0.0.1';
$port = 11915;
//启动服务
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
echo "socket_create() 失败: 原因: " . socket_strerror($sock) . "\n";
}
//绑定
if (($ret = socket_bind($sock, $address, $port)) < 0) {
echo "socket_bind() 失败: 原因: " . socket_strerror($ret) . "\n";
}
//侦听
if (($ret = socket_listen($sock, 5)) < 0) {
echo "socket_listen() 失败: 原因:: " . socket_strerror($ret) . "\n";
}
echo "连接................";
//等待连接...
do {
   //接受连接
   if (($msgsock = socket_accept($sock)) < 0) {
  echo "socket_accept() 失败: 原因: " . socket_strerror($msgsock) . "\n";
   break;
  }

  $msg = "\n欢迎使用PHP Test服务器. \n" .
   "输入 'quit'可退出. 关闭服务器可以输入 'shutdown'.\n\0";

  echo "某某人已连接";

   //给客户端发欢迎消息
  socket_send($msgsock, $msg, strlen($msg),0);

   //等待客户端发来的消息
   do {
     //接受来自客户端的消息
    socket_recv($msgsock, $buf, 2048, 0);
     if ( false === ($buf = socket_read($msgsock, 2048))) {
    echo "socket_read() 失败: 原因:: " . socket_strerror($ret) . "\n";
     break 2;
    }

     //flash端关闭的时候会给服务端发送一个空消息,判断退出
     if ($buf == '') {
      socket_close($msgsock);
      echo "某某人退出";
       break;
    }
     //把客户端发送的消息群发
    $talkback = "你说了: $buf";
    echo $talkback;
    socket_send($msgsock, $talkback, strlen($talkback),0);
  } while ( true);

   //关闭客户端
  socket_close($msgsock);
} while ( true);

//关闭服务器端
socket_close($sock);
?>


Flash As2.0代码:

System.useCodepage= true; //使用代码页,中文就是cp936

var socket = new XMLSocket();

socket.onConnect = function (success:Boolean) {
   if (success) {
    trace ( "连接成功!")
  } else {
    trace ( "连接失败!")
  }
}
if (!socket.connect( "127.0.0.1", 11915)) {
  trace( "连接失败.");
} else {
  trace( "等待连接");
}

//来自服务端的数据
socket.onData = function (doc) {
  trace( "数据长度=="+doc.length)
  trace(doc);
}

//处理帧频事件
_root.onEnterFrame = function()
{
   if(Key.isDown(Key.END))
  {
     socket.send(Math.random());
     //trace("发送")
  }
   if(Key.isDown(40))
  {
     socket.close();
  }
}

结果:

原文:
http://info.codepub.com/2008/08/info-21210.html

你可能感兴趣的:(PHP,socket,职场,Flash,休闲,5)