使用PHP项目实现一个套接字服务器

  介绍

这篇文章将为大家详细讲解有关使用PHP项目实现一个套接字服务器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

插座服务器的工作方式是这样的,不间断地运行以等待客户端的连接,一旦客户端连接上了,服务器就会将它添加到客户名单中,然后开始等待来自客户端的消息。

//, Set  time  limit 用indefinite  execution    set_time_limit  (0),   ,//,Set 从而,ip 以及port  will  listen 提醒我方表示歉意   时间=美元address  & # 39; localhost # 39;,,   $ port =,, 10000;   $ max_clients =时间10;大敌;;   ,//,Array  that  will 于client 方式;   数组$ client =, ();,   ,//,Create  a  TCP  Stream  socket    $ sock =, socket_create (AF_INET, SOCK_STREAM,, 0),,//,Bind 从而,socket 用an 地址/port    socket_bind(美元的袜子,地址,美元,美元的端口),或是死(& # 39;Could  not  bind 用地址# 39;),,//,Start  listening  for  connections    socket_listen(袜子),,   ,   echo “Waiting  for 连接…\ r \ n",,   ,//,Loop  continuously    (真正的),{while //,Setup  clients  listen  socket  for  reading    读[0]美元,=,袜子;美元,   for ($小姐:=,0;,美元小姐:& lt;, max_clients;美元,美元我+ +),{,   美元,if (收取(客户[$ i][& # 39;袜子# 39;])),   美元才能读($小姐:+,- 1),=,美元客户[$ i][& # 39;袜子# 39;];,   },//,Set  up  a  blocking  call 用socket_select (),   if  (socket_select(阅读,美元,美元write =, NULL,, except 美元;=,NULL,, tv_sec 美元;=,5),& lt;, 1),   ,继续;/*,if  a  new  connection  is  being  made  add  it 用,client  array  */,   if  (in_array(袜子美元,,读)),{,   ,for ($小姐:=,0;,美元小姐:& lt;, max_clients;美元,美元我+ +),{,   if 才能;(空(美元客户[$ i][& # 39;袜子# 39;])),{,   美元才能端[$ i][& # 39;袜子# 39;],=,socket_accept(袜子),,   echo 才能“New  client  connected 我\ r \ n"美元,   ,,休息;   ,,},   elseif 才能;(美元小姐:==,max_clients 美元;作用;1),   echo 才能“Too  many 客户…\ r \ n";,   }大敌;   },//,最终获得if  in_array    ,//,If  a  client  is  trying 用write 作用;handle  it 你;   for ($小姐:=,0;,美元小姐:& lt;, max_clients;美元,美元我+ +),{,//for  each  client    美元,if (收取(客户[$ i][& # 39;袜子# 39;])),{,   if 才能;(in_array(美元客户[$ i][& # 39;袜子# 39;],,读美元)),{,=美元才能input  socket_read(美元客户[$ i][& # 39;袜子# 39;],,1024),,   if 才能;(input 美元;==,null), {,   ,才能echo “Client  disconnecting 我\ r \ n"美元,   ,,//,Zero  length  string  meaning  disconnected    ,才能设置($客户[$ i]);,   ,,},else  {,   ,才能echo “New  input  received 我\ r \ n"美元,   ,,//,send  it 用,other  clients    ,,for  ($ j =, 0;, j 美元;& lt;, max_clients;美元,美元j + +), {,   ,,if (收取(客户[j]美元美元[& # 39;袜子# 39;]),,,,j 美元;!=,我美元),{,   ,,,echo “Writing  & # 39;输入# 39;美元,用client  $ j \ r \ n";,   ,,,socket_write(客户美元美元[j][& # 39;袜子# 39;],,输入,美元,strlen(输入)美元),,   ,,},   ,,},   ,,if  (input 美元;==,& # 39;退出# 39;),{,   ,,//,requested  disconnect    ,,socket_close($客户[$ i][& # 39;袜子# 39;]),,   ,,},   ,,},   ,,},else  {,   echo 才能“Client  disconnected 我\ r \ n"美元,//才能,Close 从而socket    socket_close才能($客户[$ i][& # 39;袜子# 39;]),,   设置才能($客户[$ i]);,   ,,},   }大敌;   },   },//,最终获得while //,Close 从而,master  sockets    null

使用PHP项目实现一个套接字服务器