当前位置:首页 > PHP教程 > php应用 > 列表

用PHP的socket实现客户端到服务端的通信实例详解

发布:smiling 来源: PHP粉丝网  添加日期:2018-07-26 13:44:09 浏览: 评论:0 

一、server.php服务端:

  1. <?php 
  2. error_reporting(E_ALL); 
  3. set_time_limit(0); 
  4. ob_implicit_flush(); 
  5. //本地IP 
  6. $address='localhost'
  7. //设置用111端口进行通信 
  8. $port= 111; 
  9. //创建SOCKET 
  10. if(($sock= socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) { 
  11.     echo"socket创建失败原因 ". socket_strerror($sock) ."\n"
  12.    
  13. if(($ret= socket_bind($sock,$address,$port)) < 0) { 
  14.     echo"创建套接字失败原因 ". socket_strerror($ret) ."\n"
  15. //监听 
  16. if(($ret= socket_listen($sock, 5)) < 0) { 
  17.     echo"监听失败原因 ". socket_strerror($ret) ."\n"
  18. do
  19.   //接收命令  
  20.   if(($msgsock= @socket_accept($sock)) < 0) { 
  21.     echo"命令接收失败原因: ". socket_strerror($msgsock) ."\n"
  22.     break
  23.   } 
  24.   $msg="\nPHP Test Server. \n"."用quit,shutdown,sun...等命令测试.\n"
  25.    
  26.   @socket_write($msgsock,$msg,strlen($msg)); 
  27.    
  28.   do
  29.     if(false === ($buf= @socket_read($msgsock, 2048, PHP_NORMAL_READ))) { 
  30.         echo"socket_read() failed: reason: ". socket_strerror($ret) ."\n"
  31.         break2; 
  32.     } 
  33.     if(!$buf= trim($buf)) { 
  34.         continue
  35.     } 
  36.     if($buf=='quit') { 
  37.         break
  38.     } 
  39.     if($buf=='shutdown') { 
  40.         socket_close($msgsock); 
  41.         break2; 
  42.     } 
  43.     if($buf=='sun') { 
  44.         echo'what are you doing?'
  45.     } 
  46.     $talkback="Backinformation : '$buf'.\n"
  47.     socket_write($msgsock,$talkback,strlen($talkback)); 
  48.     echo"$buf\n"
  49.   }while(true); 
  50.    
  51.   socket_close($msgsock); 
  52.    
  53. }while(true); 
  54.    
  55. socket_close($sock); 
  56. ?> 

二、client.php客户端:

  1. <?php 
  2. error_reporting(E_ALL); 
  3. //端口111 
  4. $service_port= 111; 
  5. //本地 
  6. $address='localhost'
  7. //创建 TCP/IP socket 
  8. $socket= socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 
  9. if($socket< 0) { 
  10.     echo"socket创建失败原因: ". socket_strerror($socket) ."\n"
  11. }else
  12.     echo"OK,HE HE.\n"
  13. $result= socket_connect($socket,$address,$service_port); 
  14. if($result< 0) { 
  15.     echo"SOCKET连接失败原因: ($result) ". socket_strerror($result) ."\n"
  16. }else
  17.     echo"OK.\n"
  18. //发送命令 
  19. $in="HEAD / HTTP/1.1\r\n"
  20. $in.="Connection: Close\r\n\r\n"
  21. $out=''
  22. echo"Send Command.........."
  23. $in="sun\n"
  24. socket_write($socket,$in,strlen($in)); 
  25. echo"OK.\n"
  26. echo"Reading Backinformatin:\n\n"
  27. while($out= socket_read($socket, 2048)) { 
  28.     echo$out
  29. echo"Close socket........"
  30. socket_close($socket); 
  31. echo"OK,He He.\n\n"
  32. ?> 

这两段代码是简单介绍用PHP实现客户端和服务端的通信

具体操作,在DOS下用PHP命令打开SERVER,处于监听状态..

再打开一个DOS窗口,用PHP命令打开CLIENT,会得到服务端的回应....

Tags: 客户端 实例 端的

分享到: