PHP实现socket

使用php+swoole实现简单的交互功能 服务端代码 <?php //创建webSocket服务器 监听所有 9501端口号,自定义的,记得放开 $serv=new swoole_websocket_server('0.0.0.0',9501); //获取请求 //on //open 建立连接 $serv:服务器 $request:客户端信息 $serv->on('open',function($serv,$request){ $serv->push($request-&... 阅读详情

一、Socket 简介
1、socket只不过是一个数据结构。
2、使用这个socket数据结构去开始一个客户端和服务器之间的会话。
3、服务器是一直在监听准备产生一个新的会话。当一个客户端连接服务器,它就打开服务器正在进行监听的一个端口进行会话。
4、服务器端接受客户端的连接请求,那么就进行一次循环。现在这个客户端就能够发送信息到服务器,服务器也能发送信息给客户端。

二、Socket 变量
产生一个Socket,你需要三个变量:一个协议、一个socket类型和一个公共协议类型。

1、协议

  1. AF_INET  
  2. //产生socket的协议,使用TCP或UDP来传输,用在IPv4的地址  
  3.   
  4. AF_INET6  
  5. //产生socket的协议,使用TCP或UDP来传输,用在IPv6的地址  
  6.   
  7. AF_UNIX  
  8. //本地协议,使用在Unix和Linux系统上,它很少使用,一般都是当客户端和服务器在同一台机器上的时候使用  

2、Socket类型

  1. SOCK_STREAM  
  2. //这个协议是按照顺序的、可靠的、数据完整的基于字节流的连接。这是一个使用最多的socket类型,这个socket是使用TCP来进行传输。  
  3.   
  4. SOCK_DGRAM  
  5. //这个协议是无连接的、固定长度的传输调用。该协议是不可靠的,使用UDP来进行它的连接。  
  6.   
  7. SOCK_SEQPACKET  
  8. //这个协议是双线路的、可靠的连接,发送固定长度的数据包进行传输。必须把这个包完整的接受才能进行读取。  
  9.   
  10. SOCK_RAW  
  11. //这个socket类型提供单一的网络访问,这个socket类型使用ICMP公共协议。(ping、traceroute使用该协议)  
  12.   
  13. SOCK_RDM  
  14. //这个类型是很少使用的,在大部分的操作系统上没有实现,它是提供给数据链路层使用,不保证数据包顺序  

3、公共协议

  1. ICMP  
  2. //互联网控制消息协议,主要使用在网关和主机上,用来检查网络状况和报告错误信息  
  3.   
  4. UDP  
  5. //用户数据报文协议,它是一个无连接,不可靠的传输协议  
  6.   
  7. TCP  
  8. //传输控制协议,这是一个使用最多的可靠的公共协议,它能保证数据包能够到达接受者那儿,如果在传输过程中发生错误,那么它将重新发送出错数据包。  

三、Socket函数
1、socket_create
作用:产生一个socket,相当于产生一个socket的数据结构
用法:socket_create ( int domain, int type, int protocol )
参数:domain,协议;type,类型;protocol,公共协议
返回:socket resource on success, or FALSE on error

2、socket_bind
作用:把socket绑定在一个IP地址和端口上
用法:socket_bind ( resource socket, string address [, int port] )
参数:socket,socket resource;address,ip地址;port,端口
返回:Boolean

3、socket_accept
作用:接受一个Socket连接
用法:socket_accept ( resource socket )
参数:socket,socket resource
返回:Returns a new socket resource on success, or FALSE on error.

4、socket_connect()
作用:开始一个socket连接
用法:socket_connect ( resource socket, string address [, int port] )
参数:socket,socket resource;address,ip地址;port,端口
返回:Boolean

5、socket_listen
作用:监听由指定socket的所有连接
用法:socket_listen ( resource socket [, int backlog] )
参数:socket,socket resource;
返回:Boolean

6、socket_read
作用:读取指定长度的数据
用法:socket_read ( resource socket, int length [, int type] )
参数:socket,socket resource;length,字符长度;type,PHP_BINARY_READ |PHP_NORMAL_READ
返回:string

7、socket_write
作用:写数据到socket缓存
用法:socket_write ( resource socket, string buffer [, int length] )
参数:socket,socket resource;buffer,字符;length,字符长度;
返回:Boolean

8、socket_send()
作用:这个函数发送数据到已连接的socket
用法:socket_send ( resource socket, string buf, int len, int flags )
参数:socket,socket resource;buf,字符;len,字符长度;
返回:Boolean

9、socket_last_error
作用:获取当前socket的最后错误代码
用法:socket_last_error ( [resource socket] )
参数:socket,socket resource;
返回:int

10、socket_strerror
作用:返回指定错误号的详细错误
用法:socket_strerror ( int errno )
参数:errno,socket_last_error no;
返回:string

11、socket_close
作用:关闭一个socket资源
用法:socket_close ( [resource socket] )
参数:socket,socket resource;
返回:null

四、使用说明
确认打开socket方法
a、编辑PHP.ini文件,去掉 extension=php_sockets.dll 前面的注释:
b、代码来加载扩展库

  1. if(!extension_loaded('sockets')) {  
  2.     if(strtoupper(substr(PHP_OS, 0, 3)) == "WIN") {  
  3.         dl('php_sockets.dll');  
  4.     }else{  
  5.         dl('sockets.so');  
  6.     }  
  7. }  

五、socket编程

1、服务器端

功能:
a、初始化一个socket并且打开一个缓存收发数据。

b、等待连接,一旦产生一个连接,它将打印“Socket connected”在服务器端的屏幕上。

c、服务器检查缓冲区,如果缓冲区里有数据,它将把数据发送到连接过来的计算机。
然后它发送这个数据的接受信息,一旦它接受了信息,就把信息保存到数据里,并且让连接的计算机知道这些信息,最后关闭连接。

d、连接关闭后,服务器又开始处理下一次连接。

  1. // 获取协议  
  2. $commonProtocol = getprotobyname("tcp");  
  3.   
  4. //产生一个socket  
  5. $socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);  
  6.   
  7. //把socket绑定在一个IP地址和端口上  
  8. socket_bind($socket, 'localhost', 1337);   
  9.   
  10. //监听由指定socket的所有连接  
  11. socket_listen($socket);  
  12.   
  13. //初始化buffer  
  14. $buffer = "NO DATA";  
  15. while(true) {  
  16.     //接受一个Socket连接  
  17.     $connection = socket_accept($socket);  
  18.     printf("Socket connected\r\n");  
  19.   
  20.     // 检测 buffer  
  21.     if($buffer != ""){  
  22.         printf("Something is in the buffer...sending data...\r\n");  
  23.         //写数据到socket缓存  
  24.         socket_write($connection, $buffer . "\r\n");  
  25.         printf("Wrote to socket\r\n");  
  26.     }else {  
  27.         printf("No Data in the buffer\r\n");  
  28.     }  
  29.   
  30.     //读取指定长度的数据  
  31.     while($data = socket_read($connection, 1024, PHP_NORMAL_READ))  
  32.     {  
  33.         $buffer = $data;  
  34.         //写数据到socket缓存  
  35.         socket_write($connection, "Information Received\r\n");  
  36.         printf("Buffer: " . $buffer . "\r\n");  
  37.     }  
  38.     //关闭一个socket资源  
  39.     socket_close($connection);  
  40.     printf("Closed the socket\r\n\r\n");  
  41. }  

2、客户端

功能:
a、客户端连接到服务器。客户端读取数据。

b、如果这是第一时间到达这个循环的首次连接,这个服务器将发送“NO DATA”返回给客户端。如果情况发生了,这个客户端在连接之上。

c、客户端发送它的数据到服务器,数据发送给服务器,客户端等待响应。一旦接受到响应,那么它将把响应写到屏幕上。

  1. // 创建 socket  
  2. $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);  
  3.   
  4. //链接 socket  
  5. $connection = socket_connect($socket,'localhost', 1337);  
  6.   
  7. //读取指定长度的数据  
  8. while($buffer = socket_read($socket, 1024, PHP_NORMAL_READ)) {  
  9.     if($buffer == "NO DATA") {  
  10.         printf("NO DATA");  
  11.         break;  
  12.     }else{  
  13.         // 输出 buffer  
  14.         printf("Buffer Data: " . $buffer . "");  
  15.     }  
  16. }  
  17.   
  18. printf("Writing to Socket");  
  19.   
  20. //写数据到socket缓存  
  21. if(!socket_write($socket, "SOME DATA\r\n")){  
  22.     printf("Write failed");  
  23. }  
  24.   
  25. //读取指定长度的数据  
  26. while($buffer = socket_read($socket, 1024, PHP_NORMAL_READ)){  
  27.     printf("Data sent was: SOME DATA Response was:" . $buffer . "");  
  28. }  
  29.   
  30. printf("Done Reading from Socket");  
ThinkPHP和Workerman整合实现Socket通信【php实现socket】 因为最近有个项目涉及到Socket通信,于是自己尝试了一下搭建一个服务端WebSocket通信的项目,写个笔记,能帮助到你的话,十分荣幸。废话不多说进入正题: 先说下编者的运行环境 我是用 CentOS 6.5 ,PHP 5.6 首先要实现Socket通信要了解Socket的作用和用法(自行百度),然后就是需要你的服务器或者本地php环境支持并开启了Socket,一般集成环境都是支持的 ... 阅读详情

相关推荐

PHP Socket通信: UDP通信实例

我们将使用PHP的socket函数来创建UDP套接字,并通过发送和接收数据来进行通信。我们通过创建UDP套接字、绑定到指定的IP地址和端口、接收和发送数据来实现基本的UDP通信功能。接下来,我们需要将套接字绑定到指定的IP地址和端口,以便能够接收来自其他主机的数据。在这里,我们使用AF_INET参数指定了IPv4地址族,SOCK_DGRAM参数指定了UDP套接字类型,SOL_UDP参数指定了UDP协议。现在,我们已经创建了UDP套接字并将其绑定到指定的IP地址和端口。这将关闭之前创建的UDP套接字。

MdlForward的博客 473

【小白入门】Socket和webSocket入门 这一篇就够了!用php的Socket自己实现简单webSocket服务器!

这几天研究了下php实现webSocket的方法,网上查了不少博文,涉及到的知识点不少。但却非常值得学,因为这方面典型的应用场景非常的多,消息推送,聊天室,所有需要长连接的地方都会用到它。 当然可能有人会说有Workerman的框架,不用自己实现它,从工作角度来看,没错。 但是,框架封装的东西屏蔽了原生的实现方法,看着是简单,但利于工作却并不...

质疑那些理所当然,才是理所当然! 3916

PHP Socket编程指南:从入门到精通

Socket是一种用于网络通信的编程接口,它允许不同计算机之间通过网络进行数据传输。Socket编程可以实现各种网络应用,如网络服务器、客户端等。在Socket编程中,有两种常见的通信协议:TCP(传输控制协议)和UDP(用户数据报协议)。TCP提供可靠的、面向连接的通信,而UDP提供不可靠的、无连接的通信。在本文中,我们将重点介绍TCP Socket编程。Socket是一种用于网络通信的编程接口,它允许不同计算机之间通过网络进行数据传输。Socket编程可以实现各种网络应用,如网络服务器、客户端等。

CodeWhizZ的博客 306

php socket如何实现长连接

长连接是什么? 朋友们应该都见过很多在线聊天工具和网页在线聊天的工具。学校内有一种熟悉的功能,如果有人回复你了,网站会马上出现提示,此时你并没有刷新页面;Gmail也有此功能,如果邮箱里收到了新的邮件,网站会马上提醒你,即使你的网页一直未刷新过。说到这里大家肯定不陌生,就是复用一个链接持续不断的进行数据交互。在现下很多互联网业务场景都需要长连接的支持,比如:游戏、聊天、信息推送等...

ak47147258369的博客 1571

Cadence Virtuoso里搞定斩波运放AC仿真:PSS+PAC保姆级设置避坑指南

然而,当工程师们尝试在Cadence Virtuoso环境中对这种特殊结构进行AC特性分析时,往往会遇到传统AC仿真方法失效的困境——这正是PSS(Periodic Steady-State)与PAC(Periodic AC)仿真组合大显身手的场景。实际项目中我们常采用"先快后精"的两步法:先用快速设置确认大体趋势,再针对关键频段进行精细仿真。例如某次设计迭代中,将harmonics从10增加到20后,发现在1MHz处的相位裕度估算误差达15°,这解释了之前样机测试时的振荡问题。

weixin_33508411的博客 449

单细胞分析(16)—— RNA Velocity 分析流程

RNA velocity 是一种强大的单细胞转录组分析工具,它可以预测细胞的未来状态,揭示发育轨迹,并用于探索细胞状态转换。RNA velocity 是一种通过单细胞 RNA 测序(scRNA-seq)数据推测细胞未来状态的分析方法。🚀**RNA velocity 提供了一个全新的角度来理解细胞的动态变化,为单细胞转录组分析带来了更深入的时空信息!

阅读文献,记录学习笔记 2977

php socket 教程,php实现socket的方法

本文主要和大家分享php实现socket的方法,主要以文字和代码的方式和大家分享,希望能帮助到大家。一、Socket 简介1、socket只不过是一个数据结构。2、使用这个socket数据结构去开始一个客户端和服务器之间的会话。3、服务器是一直在监听准备产生一个新的会话。当一个客户端连接服务器,它就打开服务器正在进行监听的一个端口进行会话。4、服务器端接受客户端的连接请求,那么就进行一次循环。现在...

weixin_35253106的博客 4187

3D点云目标检测Complex-YOLO(训练篇)(一)———KITTI数据集预处理与制作

KITTI dataset Download dataset KITTI 3D Object Detection Evaluation 2017 link 下载四个部分,共41.4GB 解压后为四部分内容(相机校准矩阵calib、RGB图像image_2、标签label_2、点云数据velodyne) 对应的testing和training数据。其中,training数据为7481张(图片和点云对应的场景),testing数据 7518张(无label_2数据)。 Data Preprocess

“知识最大的敌人不是无知,而是错觉” 7150

什么是SOCKET编程?在PHP中如何实现SOCKET通信?

SOCKET编程是一种网络编程方式,它允许程序通过网络(如Internet)或本地机器(如Unix域套接字)进行通信。SOCKET可以看作是网络通信的一个端点,通过它,程序可以发送和接收数据。SOCKET编程提供了低级的网络通信接口,使得程序员可以直接控制网络数据流。SOCKET编程是一种基础但强大的网络编程技术,它允许程序通过网络进行直接通信。在PHP中,可以使用内置的socket_*函数来实现SOCKET编程,创建服务器端和客户端进行通信。

长风破浪会有时的博客 1631

智警杯1.4---excel可视化

知识点

lulu001128的博客 949

光伏发电预测(LSTM、CNN_LSTM和XGBoost回归模型,Python代码)

一旦结果与预测差距较大,可能存在光伏系统的问题,需要找出原因,然后采取适当措施来修复光伏系统并做出更好的决策。例如,根据准确的预测,光伏系统运营商可以平衡电力消耗,并将多余的电力储备用于紧急情况。然而,光伏系统的发电量估算是一个挑战,因为光伏系统的发电量受到天气条件的极大影响。整个项目文件夹(第一个文件夹为xgboost模型相关的包文件,xg.py是xgboost模型英文注释版本,xg_chinese.py是xgboost模型中文注释版本)表示空气的温度,通常以摄氏度(°C)或华氏度(°F)为单位。

2301_79699110的博客 3030

php 简单的socket,【技术产品】PHP如何实现简单的Socket

【摘要】对于初入门的php学习者肯定会有很多问题,今天考比过小编为大家整理了关于【技术产品】PHP如何实现简单的Socket的信息,希望可以帮助到大家。下面就让我们一起来看下【技术产品】PHP如何实现简单的Socket的具体内容吧!PHP如何实现简单的Socket首先使用PHP制作的Socket服务端,其主要是设置Socket的IP地址及端口号;然后监听端口,如果有客户端连接的话,则接收连接请求和...

weixin_39640883的博客 137

基于Simulink的异步电机参数在线辨识与自适应控制仿真

本文基于Simulink平台,详细介绍了异步电机参数在线辨识与自适应控制系统的仿真实现。针对异步电机运行中参数时变问题,采用模型参考自适应系统(MRAS)实时辨识转子电阻和互感,并结合自适应PI控制策略动态调整控制器参数。通过搭建完整的矢量控制(FOC)仿真模型,验证了系统在稳态辨识、参数摄动和动态响应等工况下的性能:参数辨识误差<1.2%,转速跟踪误差<20rpm,动态响应时间<10ms。文章还提供了详细的Simulink建模步骤、核心代码实现及性能分析,为高级电机控制系统的设计与优化提

amy_mhd的博客 72

php socket编程实现聊天程序,PHP Socket 编程实现

最近在做的项目有一项需要耗时任务在后台运行的功能,虽然PHP并不是非常适合做常驻后台的守护进程,但是由于项目主要代码都是基于PHP实现,如 果运行在后台的守护进程改换别的语言会非常不方便。所以不可避免会涉及到Web端和Daemon部分的通信,Socket是一个不错的方式。Socket是什么socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作”套接字...

weixin_35490309的博客 240

PyCharm高效配置Gitee全攻略

本文介绍了如何在PyCharm和VS Code中配置Gitee插件并管理代码。主要内容包括:1) PyCharm连接Gitee的配置步骤;2) 代码拉取与冲突解决方法;3) VS Code界面功能区域详解;4) 完整的代码提交流程(暂存→提交→推送)。特别说明了VS Code中Git面板的使用方法,以及推送代码到Gitee远程仓库的具体操作步骤。文章还提供了解决代码冲突的建议和注意事项,帮助开发者更好地进行版本控制。

ZhangJiqun&191cm&85kg 298

HDR 人像肤色稳定实战:AE/AWB/ToneMap 冲突解耦与优先级裁决

人像 HDR 最容易“翻车”的就是**肤色飘**:AE 抢亮度、AWB 拉白点、TM 又在肩部压高光,三方各自“对”却合起来“错”。本文给出一套**工程可落地**的裁决策略:以**肤色 ROI 锚点**为最高约束,AE 先对脸部入射照度收敛,AWB 在**肤色先验 + 光源模型**下缓变,TM 采用**色相保持 + 中灰/肤色双锚**且时域一致化。配套**阈值与回归**(ΔE00、亮度漂移 RMS、频闪注入),把“主观对”的口径落到**可度量**,并给出逆光、多脸、霓虹等极端场景的**例外分流**。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1198

php socket http,用PHP的Socket实现HTTP请求

用PHP的Socket实现HTTP请求(2010-03-10 21:16:58)标签:杂谈要实现HTTP访问无非就是用Socket发送一个请求,然后读取返回信息。当然也可以用fsockopen()这个函数来实现,不过两个的区别不是很大class HttpRequest{var $sHostAdd;var $sUri;var $iPort;var $sRequestHeader;var $sResp...

weixin_42303079的博客 349

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

PHP:PHP实现socket连接

方法介绍(每个方法括号后面跟的是返回类型) 创建一个套接字 socket_create ( int $domain , int $type , int $protocol ) : resource domain 指定哪个协议用在当前套接字上。eg:AF_INET:IPv4 网络协议 type 选择套接字使用的类型。eg:SOCK_STREAM 提供一个顺序化的、可靠的、全双工的、基于连接的字节流...

zhyke 839

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

php 实现socket 客户端,PHP简单实现客户端和服务端Socket通信

本篇文章将给大家介绍PHP简单实现客户端和服务端Socket通信的过程本文用到的socket方法。socket服务端实现代码server.php/*** Created by PhpStorm.* User: jmsite.cn* Date: 2019/2/20* Time: 11:59*/set_time_limit(0);$host = '127.0.0.1';$port = 8081;$so...

weixin_39704727的博客 415

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

php socket通讯,PHP实现Socket通讯

PHP实现Socket通讯1. 客户端$host = gethostbyname('www.sina.cn');$port = 80;$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);socket_connect($socket, $host, $port);$send = "HEAD / HTTP/1.1\r\nHost: www.si...

weixin_39743622的博客 207

php socket class,php实现多进程socket服务器class

该类实现了多进程的socket服务,目前只写了关于TCP协议,待完善其他内容所需扩展:socket pcntl

weixin_34282589的博客 161

php socket框架,用PHP实现的服务端socket具体实例

实现方法如下:使用到的相关函数: socket_create、socket_set_block、socket_bind、socket_listen、socket_accept、socket_read、socket_write,这些函数具体参数说明在PHP文档上写很详细,这里就不再赘述,这里只是介绍服务端如何处理请求。具体实例://确保在连接客户端时不会超时set_time_limit(0);//设...

weixin_31678781的博客 389

socket PHP:详细简单的socket TCP通信PHP实现

如果你想直接运行程序实现效果:请直接看 3.3 本地服务器及客服端程序 1 背景介绍 目标:我希望通过套接字的TCP传输来搭建一个服务器,这个服务器的作用是:接受多个客户端的连接并完成他们的相互通信。比如客户端A,客户端B同时连接到服务器S,客户端A向服务器S发送消息,服务器S会将A的消息转发给B,同理,B的消息也可以通过S被转发到A。这样就实现了客户端A和客户端B之间的相互通信。 本次我们只实现...

Forever1715的博客 1万+

php简单实现socket通信

socket通信的原理在这里就不说了,它的用途还是比较广泛的,我们可以使用socket来做一个API接口出来,也可以使用socket来实现两个程序之间的通信,我们来研究一下在php里面如何实现socket通信。 由于socket服务端的代码要监听端口,等待接收请求,所以php在做socket服务的时候需要将php文件运行在CMD里面。 如果要使php文件可以在CMD里面运行,则需要进行如下设置

iqmae68024的博客 549

PHP实现简单的socket通信

前言 昨晚复习了一下用c如何实现客户端和服务器端的socket通信,参考链接:http://blog.youkuaiyun.com/zinss26914/article/details/9226413, 因为我主要开发语言是php,所以今天用php模拟实现了一个服务器端的socket守护进程,参考的是一淘工程师张洋的bolg:http://blog.codinglabs.org/articles/write

小一的专栏 5177

利用PHP实现的服务端socket

实现 相关函数:socket_create、socket_set_block、socket_bind、socket_listen、socket_accept、socket_read、socket_write,这些函数具体参数说明在PHP文档上写很详细,这里就不再赘述,这里只是介绍服务端如何处理请求。 //确保在连接客户端时不会超时set_time_limit(0);//设置IP和端口号$address="127.0.0.1";$port=54321;$socketServer=socke...

ld17822307870的博客 100
上一篇: linux下mail使用故障mail: command not found
下一篇: 【socket】用PHP的socket实现客户端到服务端的通信
Professorphp
博客等级 码龄10年 4粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值