php能实现socket通信吗
php能实现socket通信,其实现方法:1、在客户端创建“socketsocket_create();”并向服务器请求连接“socket_connect();”;2、在服务端创建“socketsocket_create();”并绑定IP和端口号“socket_bind();”;3、通过“socket_wirte();socket_read”读客户端的消息或给客户端写消息即可。
本教程操作环境:Windows10系统、PHP8.1版、DELL G3电脑
php能实现socket通信吗?
socket PHP:详细简单的socket TCP通信PHP实现
1 背景介绍
目标:我希望通过套接字的TCP传输来搭建一个服务器,这个服务器的作用是:接受多个客户端的连接并完成他们的相互通信。比如客户端A,客户端B同时连接到服务器S,客户端A向服务器S发送消息,服务器S会将A的消息转发给B,同理,B的消息也可以通过S被转发到A。这样就实现了客户端A和客户端B之间的相互通信。
本次我们只实现客户端与服务器之间连接并通信,暂时没有写服务器的转发功能。
2 TCP的简单介绍
2.1 TCP的“三次握手”
TCP的三次握手可以确保服务器和客户端之间可以正常通信。三次握手的过程:至于这个过程的解释,可以点击下面的链接来查看。
参考:https://www.yht7.com/link/70203474234c15a59de1eacc053f5690
2.2 IP和PORT
服务器需要有一个IP,TCP通信时,还需要提供一个端口号。
客服端需要有一个IP,TCP通信时,也需要提供一个端口号。
个人理解:IP就是地址,可以理解为一个房子,当你需要建立通信的时候,首先肯定得相互知道这个房子在哪里才可以吧,要不然我们得信息发送到哪里呢?
PORT端口,端口号可以理解为这个房子的一个门,我们需要指定一个门,将消息从这个门里面传送进去或者从这个门接受消息。
2.2 客户端与服务器简要通信的过程
2.2.1 php部分相关函数
客户端:
- 创建socketsocket_create();
- 向服务器请求连接socket_connect();
- 给服务器发送消息/接受服务器消息socket_wirte(); / socket_read();
- 关闭socketsocket_close();
服务器:
-
创建socketsocket_create();
-
绑定IP和端口号socket_bind();
-
监听IP和端口号(0.0.0.0表示任意IP)socket_listen();
-
阻塞等待客服端的连接socket_accept();
-
读客户端的消息/给客户端写消息socket_wirte(); / socket_read();
-
关闭socketsocket_close();
2.2.2 简要通信过程
- 服务器创建socket,并绑定IP和PORT,然后进入监听状态等待客服端发起连接。
-
客户端创建socket,对指定服务器IP和PORT进行连接。
-
服务器接受客服端发起的连接。
-
双方可以互相发送数据
-
双方关闭socket。
AB创建socket创建socket,设置允许访问IP和PORT监听某个(或所有)IP和某个端口,并进入阻塞等待客户端向指定服务器IP/PORT发起connet接受客户端A的connet双方已经建立连接发送信息发送信息通信结束后A,B同时关闭socketAB