mini2440上Apache php的socket通信


server.php

[php]
  1. <?php  
  2. //确保在连接客户端时不会超时   
  3. set_time_limit(0);  
  4.   
  5. //设置IP和端口号   
  6. $address='127.0.0.1';  
  7. $port=2009;    //调试的时候,可以多换端口来测试程序!   
  8.   
  9. //创建一个SOCKET   
  10. if(($sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP))<0)  
  11. {  
  12.   echo "socket_create() 失败的原因是:".socket_strerror($sock)."<br>";  
  13. }  
  14.   
  15. //绑定到socket端口   
  16. if(($ret=socket_bind($sock,$address,$port))<0)  
  17. {  
  18.   echo "socket_bind() 失败的原因是:".socket_strerror($ret)."\n";  
  19. }  
  20.   
  21. //开始监听   
  22. if(($ret=socket_listen($sock,4))<0)  
  23. {  
  24.   echo "socket_listen() 失败的原因是:".socket_strerror($ret)."\n";  
  25. }  
  26.   
  27. do {  
  28. if (($msgsock = socket_accept($sock)) < 0)  
  29. {  
  30.   echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";  
  31.   break;  
  32. }  
  33. //发到客户端   
  34. $msg ="<font color=red>欢迎进入服务器!</font><br>";  
  35. socket_write($msgsock$msgstrlen($msg));  
  36.   
  37. echo "读取客户端发来的信息<br>";  
  38. $buf = socket_read($msgsock,8192);  
  39.   
  40.   
  41. $talkback = "收到的信息:$buf<br>";  
  42. echo $talkback;  
  43. /* if(socket_write($msgsock, $talkback, strlen($talkback))<0) 
  44.      { 
  45.  
  46.       echo "socket_write() failed: reason: " . socket_strerror($msgsock) . "\n"; 
  47.      } 
  48.      else 
  49.      { 
  50.       echo "发送成功"; 
  51.      }*/  
  52.   
  53.   
  54. //echo $buf;   
  55. socket_close($msgsock);  
  56. while (true);  
  57.   
  58. socket_close($sock);  
  59. ?>  
client.php

[php]
  1. <?php  
  2. error_reporting(E_ALL);  
  3. set_time_limit(0);  
  4. echo "<h2>TCP/IP Connection</h2>\n";  
  5.   
  6. $service_port = 2009;  
  7. $address = "127.0.0.1";  
  8.   
  9. $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);  
  10. if ($socket < 0)  
  11. {  
  12.   echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n";  
  13. }  
  14. else  
  15. {  
  16.   echo "OK....\n";  
  17. }  
  18.   
  19. echo "试图连接 $address 端口 $service_port ...<br>";  
  20. $result = socket_connect($socket$address$service_port);  
  21. if ($result < 0)  
  22. {  
  23.   echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";  
  24. }  
  25. else  
  26. {  
  27.   echo "连接OK<br>";  
  28. }  
  29.   
  30. $in = "Hello\r\n";  
  31. $in .= "我是Chester\r\n";  
  32. $out = '';  
  33. $out1='';  
  34.   
  35.   
  36. if(!socket_write($socket$instrlen($in)))  
  37. {  
  38.   echo "socket_write() failed: reason: " . socket_strerror($socket) . "\n";  
  39. }  
  40. else  
  41. {  
  42.   echo "发送到服务器信息成功!<br>";  
  43.   echo "发送的内容为:<font color='red'>$in</font> <br>";  
  44. }  
  45.   
  46. while($out = socket_read($socket, 8192))  
  47. {  
  48.   echo "接收服务器回传信息成功!<br>";  
  49.   echo "接受的内容为:",$out;  
  50. }  
  51.   
  52. echo "关闭SOCKET...<br>";  
  53. socket_close($socket);  
  54. echo "关闭OK<br>";  
  55. ?>  
实验结果如下:

相关内容