那如何实现单一做事端连接多个客户端呢?
在上一篇文章《大略理解PHP之socket编程(一)》中,我们已经说过,要实现单一做事端连接多个客户端,可以有以下几个方法:
采取非壅塞模式,然后每当有一个客户端连上做事端,就将此客户端连接放进一个数组中,末了,通过遍历数组中的连接来与每个客户端进行交互。

采取壅塞模式,每当有一个客户端连上做事端,做事端就fork一个子进程,让子进程来实行读写操作。
采取select机制,来实现做事端与每个客户真个交互。
利用epoll机制,来实现做事端与每个客户真个交互。
下面我们就着重先容下第1种方法:采取非壅塞模式,然后每当有一个客户端连上做事端,就将此客户端连接放进一个数组中,末了,通过遍历数组中的连接来与每个客户端进行交互。
先看代码,如下:
做事端:server.php
客户端:client.php
从上面代码来看,这里最关键的地方便是做事端server.php中的socket_set_nonblock()这个函数,它可以将做事端套接字设置为非壅塞模式。这样,socket_accept()函数在接管一个客户端链接后,可以不用壅塞等待下一个连接,而让程序连续实行下一步操作。
虽然,实现做事端连接多个客户真个关键紧张在做事端,但在客户端client.php部分,也要把稳一下continue处。当客户端输入内容为空时,一定要continue,以避免程序连续向下实行,造成socket_read()函数读取不到内容而壅塞程序。
本文以上内容先容了非壅塞模式下,单一做事端连接多个客户真个实现方法,不才一篇文章中,我将先容在壅塞模式下,利用socket_select()的实现方法。如果你想理解更多内容,可以关注本头条号。