当前位置:首页 > PHP教程 > php高级应用 > 列表

php使用socket简单实现通信功能

发布:smiling 来源: PHP粉丝网  添加日期:2023-06-27 13:05:40 浏览: 评论:0 

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通信时,也需要提供一个端口号。

服务端就是负责接收客户端的信息

客户端代码

  1. $PORT = 12345; //与server端口匹配 
  2. //创建socket/参数1:代表IPV4/参数2:流传输/参数3:TCP/ 
  3. $client = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);  
  4. //向指定地址/端口发出连接请求,连接结果返回到resule/127.0.0.1指本地IP 
  5. $result = socket_connect($client"127.0.0.1"$PORT);  
  6. //这里我们简单的对连接结果进行响应/为了Debug方便 
  7. if($result == false){   
  8.     echo "ERROR CONNECT\n";  
  9.     die(); 
  10. else { 
  11.     echo "CONNECTED\n"
  12. //建立将要发送的消息 
  13. $data = "linrux Hello World\n";  
  14. //将消息发送出去 
  15. socket_write($client$data);  
  16.  //关闭socket 
  17. socket_close($client); 

服务端代码

  1. //进入死循环,一直接收客户端发送信息 
  2. while(true){ 
  3. //创建socket/参数解释同客服端 
  4. $server = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);  
  5. //绑定端口和IP/0.0.0.0表示允许任意地址发起连接/12345表示允许12345端口号进行连接 
  6. socket_bind($server"0.0.0.0", 12345);  
  7. //进入监听 
  8. socket_listen($server);  
  9. //接收请求并建立连接 
  10. $connection = socket_accept($server);  
  11. //接收数据 
  12. $data = socket_read($connection, 1024);  
  13. echo $data;  
  14. //关闭socket  
  15. #socket_close($server); 

客户端发送信息

php使用socket简单实现通信功能

服务端接收消息

php使用socket简单实现通信功能

Tags: socket php通信功能

分享到: