• 首页
  • 前端
    • HTML
    • CSS
    • Javascript
    • XML
    • AJAX
  • 前端框架
    • BootStrap
    • Jquery
  • PHP
    • 语法
    • 核心
    • 面向对象
    • PHP7
    • Socket
    • Swoole
  • 数据库
    • Mysql
    • Redis
    • Memcache
    • MongoDB
  • 优化
    • 优化方案
    • 页面静态化
    • Nginx
  • 后台框架与实战
    • Smarty
    • 源码Blog
    • TP3.2
    • TP3.2商城
    • TP5.0
    • TP5.0商城
    • Laravel
    • Laravel在线教育平台
    • Yii
    • Yii手机直播
    • CodeIgniter
    • Yaf
  • 移动开发
    • 微信公众号
    • 混合APP
  • 二次开发
    • DedeCMS
  • Linux
    • 基本操作
    • 环境搭建
  • 版本控制
    • GIT
    • SVN
  • Node.js
  • 资料库
没有结果
查看所有结果
  • 首页
  • 前端
    • HTML
    • CSS
    • Javascript
    • XML
    • AJAX
  • 前端框架
    • BootStrap
    • Jquery
  • PHP
    • 语法
    • 核心
    • 面向对象
    • PHP7
    • Socket
    • Swoole
  • 数据库
    • Mysql
    • Redis
    • Memcache
    • MongoDB
  • 优化
    • 优化方案
    • 页面静态化
    • Nginx
  • 后台框架与实战
    • Smarty
    • 源码Blog
    • TP3.2
    • TP3.2商城
    • TP5.0
    • TP5.0商城
    • Laravel
    • Laravel在线教育平台
    • Yii
    • Yii手机直播
    • CodeIgniter
    • Yaf
  • 移动开发
    • 微信公众号
    • 混合APP
  • 二次开发
    • DedeCMS
  • Linux
    • 基本操作
    • 环境搭建
  • 版本控制
    • GIT
    • SVN
  • Node.js
  • 资料库
没有结果
查看所有结果
没有结果
查看所有结果

Socket 七层网络、Socket 服务器

Mr.Lee 由 Mr.Lee
2022年3月29日
在 PHP, Socket
0
Swoole 安装、扩展源码、线程、进程、执行过程、常用事件、Http 服务器、WebSocket 服务器、Mysql 连接池、毫秒定时器、异步文件读取
0
分享
1
浏览

Socket

Socket使用的方向

智能化家居,pos刷卡机,和浏览器的websocket协议的通信。

七层网路

PHP的socket操作

Socket扩展,这个扩展就是给php操作socket的,在linux/mac sockets.so

在php.ini里面讲sockets扩展打开

使用官网查看sockets内容

http://php.net/sockets

创建一个sockets服务器

这个使用php创建http服务器

scoket_create():http://php.net/manual/zh/function.socket-create.php

第一个参数:制定坚挺的类型,ipv4和ipv6,另一个是socket文件

第二个参数:制定这个套接字的类型,一般我们选择SOCK_STREAM,因为这个类型传输数据是可靠的,性能比较好

第三个参数:制定socket使用的底层协议,一般是tcp

给上面创建的socket标识棒冰ip和端口

socket_bind():http://php.net/manual/en/function.socket-bind.php

第一个参数:就是创建的socket的资源

第二个参数是本地的ip地址

本地的ip地址可以通过ipconfig来查看

第三个参数:输入一个自定义的端口号,这个端口号不要有重复即可

启动socket服务器

socket_listen()

第一个参数:socket资源

第二个参数:监听的数量

把socket保存到数组里面

保存浏览器的websocket连接能否进行握手通信

socket在每一次刷新页面会执行,需要使用死循环让这个socket一直执行

找出活跃的socket

socket_select():

只依靠这个socket_select()选出活跃的socket是不可靠的,还需要通过socket_select()返回的值进一步进行判断

0:代表的没有任何的客户端给我们传递信息

false:标识出现了错误

处理当前正在获取的socket,分开对待主socket和其他的socket

主socket:负责接收新的socket,不负责和socket客户端进行数据交互

其它的socket:不负责接收新的socket,负责和socket客户端进行数据的交互,一个socket对应的一个客户端的数据交互

处理主socket,接收新的socket客户端的连接

socket_accept():

第一个参数:主socket

返回的就是负责和新的socket客户端进行的数据交互的socket资源

接收socket客户端传递过来的数据

socket_recv():

第一个参数:和这个socket客户端进行数据交互的socket

第二个参数:这个socket客户端传递给这个ssocket服务器的数据

第三个参数:从这个socket客户端传递给我们的数据中读取多少字节的数据,一般设置为2048

第四个参数:设置读取客户端数据的这个标记,一般给个0

返回值:实际读取了多少字节的数据

Websocket

匹配

preg_match(“/Sec\-WebSocket\-Key:\ (.+)\r\n/”, $data, $matchs);

$responseKey=base64_encode(sha1($matchs[1] . “258EAFA5-E914-47DA-95CA-C5AB0DC85B11”, true));

匹配设置

$responseData = “HTTP/1.1 101 Switching Protocols\r\n”;

$responseData .= “Upgrade: websocket\r\n”;

$responseData .= “Connection: Upgrade\r\n”;

$responseData .= “Sec-WebSocket-Accept: {$responseKey}\r\n\r\n”;

标签: Socket 服务器七层网络
上一篇文章

PHP7 太空船、const 定数组、匿名函数和匿名类、字符串转换、函数调用类里面的方法、不同的名空间调用类、数组的赋值、函数的参数、多异常抛出、list 给数组赋值

下一篇文章

Swoole 安装、扩展源码、线程、进程、执行过程、常用事件、Http 服务器、WebSocket 服务器、Mysql 连接池、毫秒定时器、异步文件读取

下一篇文章
Swoole 安装、扩展源码、线程、进程、执行过程、常用事件、Http 服务器、WebSocket 服务器、Mysql 连接池、毫秒定时器、异步文件读取

Swoole 安装、扩展源码、线程、进程、执行过程、常用事件、Http 服务器、WebSocket 服务器、Mysql 连接池、毫秒定时器、异步文件读取

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Search

没有结果
查看所有结果

About Me

个人随笔

Winston Lee

Programmer

Hello & welcome to my blog! My name is Winston Lee and am a programmer and am keen on sharing.

Winston Lee

About Me

Hello & welcome to my blog! My name is Winston Lee and am a programmer and am keen on sharing.

Categories

  • AJAX
  • BootStrap
  • CodeIgniter
  • CSS
  • DedeCMS
  • GIT
  • HTML
  • Javascript
  • Jquery
  • Laravel
  • Laravel在线教育平台
  • Linux
  • Memcache
  • MongoDB
  • MVC
  • Mysql
  • Nginx
  • Node
  • PDO
  • PHP
  • PHP7
  • PHP基本语法
  • PHP核心编程
  • Redis
  • Smarty
  • Socket
  • SVN
  • Swoole
  • TP3.2
  • TP3.2商城
  • TP5.0
  • TP5.0商城
  • XML
  • Yaf
  • Yii
  • Yii手机直播
  • 二次开发
  • 优化方案
  • 前端技术
  • 前端框架
  • 后台框架
  • 基本操作
  • 微信公众号
  • 数据库
  • 未分类
  • 混合APP
  • 源码Blog项目
  • 版本控制
  • 环境搭建
  • 移动端开发
  • 网站优化
  • 资料
  • 面向对象
  • 面向对象编程
  • 页面静态化

Tags

DOM Json RBAC 事件 传参 函数 分页 判断语句 匿名函数 变量 图片上传 存储过程 安装 对象 封装 属性 接口 控制器 数据库操作 数据类型 数据表 数组 文件上传 无刷新分页 权限 标签 模型 正则 流程控制 目录结构 算法 类 索引 继承 缩略图 表关系 视图 路由 运算符 选择器 递归 配置 错误处理 页面静态化 验证码
  • 首页
  • 前端
  • 前端框架
  • PHP
  • 数据库
  • 优化
  • 后台框架与实战
  • 移动开发
  • 二次开发
  • Linux
  • 版本控制
  • Node.js
  • 资料库

沪公网安备31011502400873 | 沪ICP备2024050435号-3

没有结果
查看所有结果
  • 首页
  • 前端
    • HTML
    • CSS
    • Javascript
    • XML
    • AJAX
  • 前端框架
    • BootStrap
    • Jquery
  • PHP
    • 语法
    • 核心
    • 面向对象
    • PHP7
    • Socket
    • Swoole
  • 数据库
    • Mysql
    • Redis
    • Memcache
    • MongoDB
  • 优化
    • 优化方案
    • 页面静态化
    • Nginx
  • 后台框架与实战
    • Smarty
    • 源码Blog
    • TP3.2
    • TP3.2商城
    • TP5.0
    • TP5.0商城
    • Laravel
    • Laravel在线教育平台
    • Yii
    • Yii手机直播
    • CodeIgniter
    • Yaf
  • 移动开发
    • 微信公众号
    • 混合APP
  • 二次开发
    • DedeCMS
  • Linux
    • 基本操作
    • 环境搭建
  • 版本控制
    • GIT
    • SVN
  • Node.js
  • 资料库

沪公网安备31011502400873 | 沪ICP备2024050435号-3