php使用socket简朴实现通信功能
socket只不过是一个数据结构。使用这个socket数据结构往开始一个客户端和服务器之间的会话。服务器是一直在监听预备产生一个新的会话。当一个客户端连接服务器,它就打开服务器正在入行监听的一个端口入行会话
WebSocket的作用
WebSock其实在寻常使用,我们是时常见到的,用于实时通讯,例如我们常用的实时聊天、服务端向客户端消息推送、也可以实现踢用户下线功能。实时弹幕功能等等。
什么是握手
为了创建Websocket连接,需要通过浏览器发出哀求,之后服务器入行归应,这个过程通常称为“握手”(handshaking)。
这是比较正式的理解,在接下来使用方式中会在介绍到握手的实际含义。
背景介绍
目标:我希望通过套接字的TCP传输来搭建一个服务器,这个服务器的作用是:接受多个客户端的连接并完成他们的相互通信。比如客户端A,客户端B同时连接到服务器S,客户端A向服务器S发送消息,服务器S会将A的消息转发给B,同理,B的消息也可以通过S被转发到A。这样就实现了客户端A和客户端B之间的相互通信。
本次我们只实现客户端与服务器之间连接并通信,暂时没有写服务器的转发功能。
IP和PORT
服务端需要有一个IP,TCP通信时,还需要提供一个端口号。
客服端需要有一个IP,TCP通信时,也需要提供一个端口号。
服务端就是负责接收客户端的信息
客户端代码
$PORT = 12345; //与server端口匹配 //创建socket/参数1:代表IPV4/参数2:流传输/参数3:TCP/ $client = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); //向指定地址/端口发出连接哀求,连接结果返归到resule/127.0.0.1指本地IP $result = socket_connect($client, "127.0.0.1", $PORT); //这里我们简朴的对连接结果入行响应/为了Debug方便 if($result == false){ echo "ERROR CONNECT\n"; die(); } else { echo "CONNECTED\n"; } //建立将要发送的消息 $data = "linrux Hello World\n"; //将消息发送出往 socket_write($client, $data); //关闭socket socket_close($client);
服务端代码
//入进死循环,一直接收客户端发送信息 while(true){ //创建socket/参数解释同客服端 $server = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); //绑定端口和IP/0.0.0.0表示答应任意地址发起连接/12345表示答应12345端口号入行连接 socket_bind($server, "0.0.0.0", 12345); //入进监听 socket_listen($server); //接收哀求并建立连接 $connection = socket_accept($server); //接收数据 $data = socket_read($connection, 1024); echo $data; } //关闭socket #socket_close($server);
客户端发送信息
服务端接收消息
到此这篇关于php使用socket简朴实现通信功能的文章就介绍到这了,更多相关php socket内容请搜索以前的文章或继承浏览下面的相关文章希望大家以后多多支持!
很赞哦!()
大图广告(830*140)