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

php 中操作tcp 与SOCKET函数实例

发布:smiling 来源: PHP粉丝网  添加日期:2014-08-06 14:46:29 浏览: 评论:0 
  1. //创建socket服务 
  2. $c=stream_socket_server("tcp://127.0.0.1:1100"); 
  3. while(1) 
  4.   if(is_resource($a=stream_socket_accept($c))) 
  5.   { 
  6.     //do something time-consuming 
  7.     //获取网络socket名称 
  8.     if(stream_socket_get_name($a,true)!==false) 
  9.     { 
  10.       fwrite($a,"regards form berlin"); 
  11.     } 
  12.   } 
  13.  
  14. // 
  15.  
  16. //创建两个无区别的socket数据流连接 
  17. $sockets=stream_socket_pair(stream_pf_unix,stream_sock_stream,stream_ipproto_ip); 
  18. //创建子进程并返回其pid 
  19. $pid=pcntl_fork(); 
  20. if($pid==-1) 
  21.   //如果没有子进程 
  22.   die('could not fork'); 
  23. else if($pid
  24.   /*父进程*/ 
  25.   fclose($sockets[0]); 
  26.   fwrite($sockets[1], "child pid: $pidn"); 
  27.   echo fgets($sockets[1]); 
  28.   fclose($sockets[1]); 
  29. else 
  30.   /*子进程*/ 
  31.   fclose($sockets[1]); 
  32.   fwrite($sockets[0], "message from childn"); 
  33.   echo fgets($sockets[0]); 
  34.   fclose($sockets[0]); 
  35.  
  36. // 
  37.  
  38. /*打开一个socket服务端*/ 
  39. $server=stream_socket_server('tcp://127.0.0.1:1234'); 
  40. /*接受一个连接*/ 
  41. $socket=stream_socket_accept($server); 
  42. /*获取数据*/ 
  43. echo "received out-of-band:'".stream_socket_recvfrom($socket,1500,stream_oob)."'n"
  44. /*使用peek获取数据*/ 
  45. echo "data:'".stream_socket_recvfrom($socket,1500,stream_peek)."'n"
  46. /*正常获取数*/ 
  47. echo "data:'".stream_socket_recvfrom($socket,1500)."'n"
  48. /*关闭socket*/ 
  49. fclose($socket); 
  50. fclose($server); 
  51.  
  52. // 
  53.  
  54. /*打开一个socket客户端*/ 
  55. $socket=stream_socket_client('tcp://127.0.0.1:1234'); 
  56. /*发送正常数据*/ 
  57. fwrite($socket,"normal data transmit."); 
  58. /*发送更多的数据*/ 
  59. stream_socket_sendto($socket,"out of band data.",stream_oob); 
  60. /*关闭socket*/ 
  61. fclose($socket); 
  62.  
  63. // 
  64.  
  65. //创建服务端 
  66. $socket=stream_socket_server("tcp://0.0.0.0:8000",$errno,$errstr); 
  67. //如果创建失败 
  68. if(!$socket
  69.   echo "$errstr ($errno)<br />n"
  70. //如果创建成功 
  71. else 
  72.   //接受连接 
  73.   while($conn=stream_socket_accept($socket)) 
  74.   { 
  75.     //写入数据 
  76.     fwrite($conn,'the local time is '.date('n/j/y g:i a')."n"); 
  77.     //关闭连接 
  78.     fclose($conn); 
  79.   } 
  80.   //关闭socket 
  81.   fclose($socket); 

Tags: php tcp SOCKET函数

分享到: