介绍
这篇文章将为大家详细讲解有关使用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项目实现一个套接字服务器