Welcome 微信登录

首页 / 网页编程 / PHP / 用php的socket跟flash的socket通信

用php的socket跟flash的socket通信2010-02-26 博客园 火星鸟关于socket不多说了,这个网上的资料很多,关于flash的资料也很多,这里只说在网上找不到资料或者资料很少的哦东西

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

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

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

严格.

下面分几个部分来说:php的socketflash的socketflash的安全策略怎么用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) . " ";
16. }
17.

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

22. if (($ret = socket_listen($sock, 5)) < 0) {
23. echo "socket_listen() failed: reason: " . socket_strerror($ret) . " ";
24. }
25. do {
26. if (!($msgsock = socket_accept($sock))) {
27. echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . " ";
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."", strlen($msg.""));
39. }
40.

41. //答复数据
42.

43. $talkback = "PHP: You said "$buf". ";
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. ?>