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

 更新时间:2023年03月06日 10:32:24   作者:小信啊啊  
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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PHP常见过waf webshell以及最简单的检测方法

    PHP常见过waf webshell以及最简单的检测方法

    这篇文章主要给大家介绍了关于PHP常见过waf webshell以及最简单的检测方法,文中通过示例代码介绍的非常详细,对大家学习或者使用PHP具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • THINKPHP+JS实现缩放图片式截图的实现

    THINKPHP+JS实现缩放图片式截图的实现

    上传图片 -- 保存并显示图片 -- JS获取缩略图参数 -- 提交位置参数 -- 图片缩放保存类处理图片 -- 保存截取的图片--更新数据库 -- 跳转
    2010-03-03
  • PHP利用一行代码删除目录下所有文件方法示例

    PHP利用一行代码删除目录下所有文件方法示例

    这篇文章主要给大家介绍了关于PHP如何利用一行代码删除目录下所有文件的相关资料,文中先对glob函数进行了一个简单的介绍,而后通过示例代码将删除的方法介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2018-01-01
  • PHP读取大文件的多种方法介绍

    PHP读取大文件的多种方法介绍

    这篇文章主要为大家详细介绍了PHP读取大文件的多种方法,感兴趣的朋友可以参考一下
    2016-04-04
  • php中使用PHPExcel读写excel(xls)文件的方法

    php中使用PHPExcel读写excel(xls)文件的方法

    这篇文章主要介绍了php中使用PHPExcel读写excel(xls)文件的方法,phpExcel是常用的用于操作Excel的PHP类库,应用非常广泛。需要的朋友可以参考下
    2014-09-09
  • 详解PHP执行定时任务的实现思路

    详解PHP执行定时任务的实现思路

    这篇文章主要介绍了详解PHP执行定时任务的几种实现思路,PHP的定时任务功能必须通过和其他工具结合才能实现,们就来深入的解析几种常见的php定时任务的思路
    2015-12-12
  • PHP实现CSV文件的导入和导出类

    PHP实现CSV文件的导入和导出类

    这篇文章主要介绍了PHP实现CSV文件的导入和导出类,实例分析了php针对csv文件的操作技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • 深入理解PHP原理之Session Gc的一个小概率Notice

    深入理解PHP原理之Session Gc的一个小概率Notice

    PHP Notice: session_start(): ps_files_cleanup_dir
    2011-04-04
  • Mac M1安装mnmp(Mac+Nginx+MySQL+PHP)开发环境

    Mac M1安装mnmp(Mac+Nginx+MySQL+PHP)开发环境

    这篇文章主要介绍了Mac M1安装mnmp(Mac+Nginx+MySQL+PHP)开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Gregarius中文日期格式问题解决办法

    Gregarius中文日期格式问题解决办法

    Gregarius支持中文的程度很不错,唯一的缺陷就是在日期格式上会出现乱码。其实只要修改根目录下util.php文件的rss_locale_date方法就可以解决这个问题,希望可以帮助使用Gregarius的朋友,修改后的方法代码如下:
    2008-04-04

最新评论