快速业务通道

用php的socket跟flash的socket通信

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22

关于socket不多说了,这个网上的资料很多,关于flash的资料也很多,这里只说在网上找不到资料或者资料很少的哦东西

php的socket资料可谓少之又少,光是在google上搜php socket,出来的结果页就是那么三四篇文章,点进去看看,基本都是

从手册上抄下来的,一点问题都起不了,以至于我花了两天时间才使php和flash成功通信,呵呵

其实,php和flash的socket通信不是问题的难点,难点在于flash的安全策略,特别是socket,特别是在flash player 10中要求更加

严格.

下面分几个部分来说:php的socket\flash的socket\flash的安全策略\怎么用php解决这个策略

希望对缺乏资料的人有所帮助,如果你用的其他后台语言与flash交互,可能比php简单,因为php的确不是个做socket的好东西,

但是或许某个时刻你就会用到这个

(1)php的socket:

先贴一段代码,就是我实现通信的程序中的代码:

1. <?php
2. set_time_limit(0);
3. $address = "127.0.0.1";
4. ob_implicit_flush();
5. /*
6. * Created on 2009-9-14
7. *
8. * To change the template for this generated file go to
9. * Window - Preferences - PHPeclipse - PHP - Code Templates
10. */
11.

12. $port = ''8083'';
13.

14. if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
15. echo "socket_create() failed: reason: " . socket_strerror($sock) . "\n";
16. }
17.

18. if (($ret = socket_bind($sock, $address, $port)) < 0) {
19. echo "socket_bind() failed: reason: " . socket_strerror($ret) . "\n";
20. }
21.

22. if (($ret = socket_listen($sock, 5)) < 0) {
23. echo "socket_listen() failed: reason: " . socket_strerror($ret) . "\n";
24. }
25. do {
26. if (!($msgsock = socket_accept($sock))) {
27. echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
28. break;
29. }
30. /* 开始接受socket传过来的数据s. */
31.

32. do {
33.

34. //如果是安全策略请求,则传输安全策略文件内容
35. if($buf = socket_read($msgsock, 2048)){
36. if(strpos($buf,''policy-file-request'')){
37. $msg ="<cross-domain-policy><allow-access-from domain=''*'' to-ports=''*'' /></cross-domain-policy>";
38. socket_write($msgsock, $msg."\0", strlen($msg."\0"));
39. }
40.

41. //答复数据
42.

43. $talkback = "PHP: You said ''$buf''.\n";
44. socket_write($msgsock, $talkback, strlen($talkback));
45.

46. }
47.

48. } while (true);
49. socket_close($msgsock);
50. } while (true);
51. //socket_close($spawn);
52. //socket_close($socket);
53. ?>

(2)flash的socket通信:

flash的socket通信也是资料比较多,直接贴代码

1. package
2. {
3. import fl.controls.TextArea;
4. import fl.core.UIComponent;
5.

6. import flash.events.*;
7. import flash.net.Socket;
8. import flash.system.*;
9. import flash.utils.ByteArray;
10. import flash.utils.setTimeout;
11. /**
12. * ...
13. * @author DefaultUser (Tools -> Custom Arguments...)
14. */
15. public class CustomSocket
16. {
17. private const CR:int = 13; // Carriage Return (CR)
18. private const WILL:int = 0xFB; // 251 - WILL (option code)
19. private const WONT:int = 0xFC; // 252 - WON''T (option code)
20. private const DO:int = 0xFD

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号