4.tcp问题及进程

2023-11-12

1 tcp 问题

a,粘包
b,拆包

解决:


1.1 解决方案-1-粘包-特殊字符方式

a. 当时短连接的情况下,不用考虑粘包的情况 
b. 如果发送数据无结构,如文件传输,这样发送方只管发送,接收方只管接收存储就ok,也不用考虑粘包 
c. 如果双方建立长连接,需要在连接后一段时间内发送不同结构数据 接收方创建预处理线程,对接收到的数据包
进行预处理,将粘连的包分开;

 

1.2 swoole的解决方式:


swoole的解决办法就是通过EOF的方式处理;在swoole中提供了一个open_eof_split的选项: 
http://wiki.swoole.com./wiki/page/421.html

 

1.3 解决方案-统-1-粘包-一标准(固定包头+包体协议)


对于这样的问题情况,实际上我们可以通过定义好发送消息的tcp数据包的格式,而这个对于服务端和客户端相互
之间就遵守这个规范

这种方式就是通过与在数据传输之后会在tcp的数据包中携带上数据的长度,然后呢服务端就可以根据这个长度,
对于数据进行截取;

对于pack的解释 -》https://php.golaravel.com/function.pack.html
对于unpack的解释 -》https://php.golaravel.com/function.unpack.html

须知:一个字节 = 8个二进制位

 

相关配置:


open_length_check: 打开包长检测特性 
package_length_type: 长度字段的类型,固定包头中用一个4字节或2字节表示包体长度。 
package_length_offset:从第几个字节开始是长度,比如包头长度为120字节,第10个字节为长度值,这里
填入9(从0开始计数)
package_body_offset: 从第几个字节开始计算长度,比如包头为长度为120字节,第10个字节为长度值,包
体长度为1000。如果长度包含包头,这里填入0,如果不包含包头,这里填入120 
package_max_length: 最大允许的包长度。因为在一个请求包完整接收前,需要将所有数据保存在内存中,
所以需要做保护。避免内存占用过大。

package_length_type 的参考 https://segmentfault.com/a/1190000008305573

 

2. 进程-线程

 

2.1 进程


专业:

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本
单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当 代面向
线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

实际:

什么是进程,所谓进程其实就是操作系统中一个正在运行的程序,我们在一个终端当中,通过php,运行一
个php文件,这个时候就相当于我们创建了一个进程,这个进程会在系统中驻存,申请属于它自己的内 存空间系统
资源并且运行相应的程序

组成:

进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据
区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程 执
行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。

 

特征


动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。 
并发性:任何进程都可以同其他进程一起并发执行 独立性:进程是一个能独立运行的基本单位,同时也是系统分
配资源和调度的独立单位; 
异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进 结
构特征:进程由程序、数据和进程控制块三部分组成。 多个不同的进程可以包含相同的程序:一个程序在不同的
数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

4.tcp问题及进程 的相关文章

  • php安装swoole插件

    swoole插件 安装wget apt install wget 安装openssl apt install openssl xff08 https要用到 安装phpize apt install php7 3 dev 安装make apt
  • swoole 相关

    安装虚拟机 VMware Workstation Pro 安装CentOS CentOS 7 x86 64 Minimal 1708 iso 安装FinalShell 教程地址 安装lnmp 教程地址 服务状态管理命令 1 安装lnmp 2
  • Centos7 宝塔升级swoole版本

    安装swoole 1 首先进入指定目录后下载指定swoole版本 cd usr local src wget https github com swoole swoole src archive v4 5 2 tar gz 2 下载下来后
  • Tcp是怎样进行可靠准确的传输数据包的?

    概述 很多时候 我们都在说Tcp协议 Tcp协议解决了什么问题 在实际工作中有什么具体的意义 想到了这些我想你的技术会更有所提升 Tcp协议是程序员编程中的最重要的一块基石 Tcp是怎样进行可靠准确的传输数据包的呢 看过很多文章里都提到过T
  • 柔性OLED拼接屏有哪些场景化应用?

    柔性OLED拼接屏是一种新型的显示技术 它采用了柔性OLED屏幕 可以实现多个屏幕的拼接 形成一个大屏幕显示 这种技术可以应用于各种场合 如商业展示 广告宣传 会议演示等 柔性OLED屏幕是一种新型的显示技术 它采用了柔性材料作为基底 可以
  • window10基于WSL,通过ppa快速搭建LNMP环境,打造thinkphp6+swoole+docker开发环境(php8.0,对其他版本也适用)

    安装WSL2和UBUNTU 换源 两种方式都行 不过改之前都要记得备份 1 一行语句搞定 sudo sed i s archive ubuntu com mirrors ustc edu cn g etc apt sources list
  • 临沂地区的OLED拼接屏有哪些独特优点?

    临沂oled拼接屏是一种高清晰度的显示屏 由多个oled屏幕拼接而成 它可以用于商业广告 展览 会议 演出等场合 具有高亮度 高对比度 高色彩饱和度 高刷新率等优点 能够吸引人们的眼球 提高信息传递效果 临沂oled拼接屏的优点之一是高亮度
  • oled拼接屏优势详解

    湖北省是中国中部地区的一个省份 拥有着丰富的资源和广阔的市场 在这个省份中 随着科技的不断发展 越来越多的企业开始使用oled拼接屏来展示自己的产品和服务 那么 什么是oled拼接屏呢 它有哪些优势和应用场景呢 下面就让我们来了解一下 首先
  • OLED拼接屏生产流程全解析:关键步骤、注意事项和技术趋势

    OLED拼接屏作为现代商业展示 会议室和指导系统中的重要组成部分 其高亮度 高对比度和逼真的色彩效果备受推崇 然而 要实现一块完美无缝的OLED拼接屏并非易事 本文将深入探讨OLED拼接屏的生产过程 包括关键步骤 注意事项以及当前的技术趋势
  • 探索OLED拼接屏的特点及在莱山的场景化应用

    涞山oled拼接屏是一种高清晰度的显示屏 由多个oled屏幕拼接而成 它可以用于各种场合 如商业展示 广告宣传 会议演示等 涞山oled拼接屏具有以下特点 1 高清晰度 oled屏幕具有高对比度 高亮度 高色彩饱和度等特点 可以呈现出非常清
  • Swoole - 为什么说Swoole中小型企业微服务的首选技术方案

    概述 Swoole的出现 使PHP语言不再局限于传统的 Web领域 对中小企业有很好的支持 有一些企业盲目的追求微服务和K8s 我真诚建议不要轻易上微服务 上了你才知道这里面的辛酸 高成本 低效率会拖碎整个团队 研究中小企业的提效 节省成本
  • WebSocket 协议简介

    一 什么是WebSocket WebSocket是一种在单个TCP连接上进行全双工通讯的协议 WebSocket通信协议于2011年被IETF定为标准RFC 6455 并由RFC7936补充规范 WebSocket API也被W3C定为标准
  • Swoole系列(3) - 服务端 (异步风格)

    1 应用场景 主要用于学习和使用Swoole的服务端 异步风格 同时学习其实现原理 2 学习 操作 1 文档阅读 Swoole4 文档 服务端 异步风格 2 整理输出 2 1 是什么 方便的创建一个异步服务器程序 支持 TCP UDP un
  • 7D透明屏的市场应用广泛,在智能家居中有哪些应用表现?

    7D透明屏是一种新型的显示技术 它能够实现透明度高达70 以上的显示效果 这种屏幕可以应用于各种领域 如商业广告 展览展示 智能家居等 具有广阔的市场前景 7D透明屏的工作原理是利用光学投影技术 将图像通过透明屏幕投射出来 与传统的液晶显示
  • swoole-redis连接池的问题总结

    答题小程序遇到的问题 1 使用swoole的redis池爆满之后 无法调试 也不会报错 但是使用strace调试代码跟踪会出现 出现原因如下 1 代码出错 2 连接池爆满 解决方案 使用下面插件作为连接池 因为他有 一个定时关闭redis链
  • 记一次swoole连接数太多导致的错误

    原先就有点担心这个项目正式上线会出现各种问题 所以刚上线就赶紧查看日志 果然 频繁出现错误 WARNING Server accept connection accept failed Error Too many open files 2
  • 4.tcp问题及进程

    1 tcp 问题 a 粘包 b 拆包 解决 1 1 解决方案 1 粘包 特殊字符方式 a 当时短连接的情况下 不用考虑粘包的情况 b 如果发送数据无结构 如文件传输 这样发送方只管发送 接收方只管接收存储就ok 也不用考虑粘包 c 如果双方
  • php结合swoole 如何对接ChatGPT接口

    对接ChatGPT接口需要进行以下步骤 安装Swoole扩展和PHP cURL扩展 在项目中引入 composer require guzzlehttp guzzle 来安装 Guzzle HTTP客户端 编写HTTP请求代码调用ChatG
  • 多版本php安装swoole失败问题

    问题描述 使用命令 pecl安装报错 查看报错提示使用的是低版本的php 问题原因 pecl设置的环境变量指向的路径是低版本的所以如果想使用高版本的php 需要使用全路径命令 解决方法 usr local php7 26 bin pecl
  • Swoole从入门到入土(18)——WebSocket服务器[心跳ping]

    由于 WebSocket 是长连接 如果一定时间内没有通讯 连接可能会断开 这时候需要心跳机制 WebSocket 协议包含了 Ping 和 Pong 两个帧 可以定时发送 Ping 帧来保持长连接 1 心跳原理图 2 websocket协

随机推荐

  • html2pdf的使用与html2Canvas+jspdf长图不分页

    html2pdf的使用 html2pdf在https github com eKoopmans html2pdf js说明的很清楚了 下面给出一个例子 const handleDownload gt let element document
  • 最小生成树----算法导论

    算法导论 上已经解释的非常清楚了 于是直接照搬过来吧 本文转载自 算法导论
  • pyqt5中label等文字字体及背景颜色的设置

    界面背景设置 formObj setStyleSheet MainWindow border image url image background4 png label字体颜色设置 self label setStyleSheet colo
  • VUE预览blob视频流

    无插件 后端最开始返回的数据 把url传给后端转成blob流 然后后端返回的blob流直接播放
  • TS:链表

    链表 有序元素集合 逻辑上存在连续关系 物理上不需要连续存储 单向链表 type ListNode
  • 基于FPGA的图像sobel锐化实现,包括tb测试文件和MATLAB辅助验证

    目录 1 算法运行效果图预览 2 算法运行软件版本 3 部分核心程序 4 算法理论概述 5 算法完整程序工程 1 算法运行效果图预览 将FPGA的仿真结果导入到matlab显示图像效果 2 算法运行软件版本 MATLAB2022a viva
  • python基本数据类型、数据类型的判断、数据类型的转换、算数运算符、赋值运算符、比较运算符

    基本数据类型 python3中有6个标准的数据类型 数值 number 包括整数 int 浮点数 float 复数 complex 布尔值 bool 字符串 string python种字符串要求使用一堆单引号 或者双引号 或者双引号来包裹
  • Flink-1.12.0 CEP详解与实战

    什么是CEP CEP Complex Event Processing 复杂事件处理 一个或多个由简单事件构成的事件流通过一定的规则匹配 然后输出用户想得到的数据 满足规则的复杂事件 Flink CEP简介 Flink CEP是在flink
  • 小程序系列:onLoad,onReady和onShow等生命周期函数的区别和使用

    小程序请求这部分 我们发现有onLoad onReady onShow等都可以调用function发送请求 他们之间有什么区别 首先官方文档先甩出来 这些都是微信页面page这个Object的声明周期函数里面的 其实点进去看定义就可以了 毕
  • mysql分片的几种分配策略 - 固定、动态、固动结合、显示分配等

    假设我们要对用户的数据进行分片存储 依据的是用户id 1 关于固定分配 核心是利用哈希函数将输入的id值映射到一个输出值上 这个输出值就直接是分片id 注意这一点很重要 这是与混合分配策略区分的关键 2 动态分配 动态分配不使用哈希函数 而
  • 【Android】ReactNative实现计算器

    简介 大三学生党一枚 主攻Android开发 对于Web和后端均有了解 语录 取乎其上 得乎其中 取乎其中 得乎其下 以顶级态度写好一篇的博客 做IT行业的相信大部分朋友都开发过计算器的小demo 大部分都是基于C Java Python开
  • 前端系列之jQuery(jQuery事件)

    DOM事件模型 DOM 0级事件模型
  • 绝了!一个妹子 rm -rf 把公司整个数据库删没了...

    作者 zhouyu 来源 cnblogs com zhouyu629 p 3734494 html 经历了两天不懈努力 终于恢复了一次误操作删除的生产服务器数据 对本次事故过程和解决办法记录在此 警醒自己 也提示别人莫犯此错 也希望遇到问题
  • JAVA-程序的编译过程及运行过程

    目录 前言 一 Java程序的执行过程 1 编译期 2 运行期 二 小例子 1 进入cmd窗口 2 编译期 3 运行期 总结 前言 在之前我们做了第一个案例 Hello World 案例 也对其进行了详细的解析 HelloWorld案例 详
  • 【数电】理解MOS管的Vth(增强型)

    其实就是 对NMOS来说 栅极底下是P型半导体 有空穴和B 离子 栅衬之间加电压 电子往栅极底下跑 与空穴复合 此时形成耗尽层 虽然因为B 离子的原因带负电 但无法自由移动 当电压超过Vth 多余电子来到栅极底下 可自由移动 形成沟道
  • C或C++项目实战之贪吃蛇

    编译环境 VS2017 VS其他版本皆可 EasyX图形库 编程语言 c c 当前版本 snakeGame1 0 修改时间 2019 6 13 项目组成 5 1 头文件 snake snake h 5 2 源文件 main cpp snak
  • python获取程序运行过程中所需要的时间

    使用python的过程中 需要得知程序从运行开始到结束所需要的时间 可以使用clock 的方法来实现 引入所需要的时间库 import datetime import time 程序计时器 启动计时器 start time clock 中间
  • conda 环境无法激活的问题

    项目场景 提示 这里简述项目相关背景 例如 项目场景 示例 通过蓝牙芯片 HC 05 与手机 APP 通信 每隔 5s 传输一批传感器数据 不是很大 安装anaconda3 pypcharm pycharm解释器使用anaconda3目录下
  • Dynamics 365 9.0 Version 新功能(1) 支持查找没有Opporunity的Account

    Dynamics 365 升级到9 0版本后 增强了高级查找中相关实体1 N关系的不包含数据的查询 这个功能虽然不太起眼 但是确实很多人期盼已久的 先来看下之前版本的高级查找 我以Accouts为示例 选择查询的相关实体是Opportuni
  • 4.tcp问题及进程

    1 tcp 问题 a 粘包 b 拆包 解决 1 1 解决方案 1 粘包 特殊字符方式 a 当时短连接的情况下 不用考虑粘包的情况 b 如果发送数据无结构 如文件传输 这样发送方只管发送 接收方只管接收存储就ok 也不用考虑粘包 c 如果双方