首页 > 开发 > PHP > 正文

php 中操作tcp 与SOCKET函数实例

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表