当前位置: 首页 > news >正文

Socket交互的基本流程?

TCP socket通信过程图

  

什么是网络编程,网络编程就是编写程序使两台连联网的计算机相互交换数据。怎么交换数据呢?操作系统提供了“套接字”(socket)的组件我们基于这个组件进行网络通信开发。tcp套接字工作流程都以“打电话”来生动表达,tcp套接字可以比喻成电话。

电话可以同时用来拨打和接听的,但对套接字而言,拨打和接听是有区别的。我们先讲解套接字创建过程。其实这个过程跟我们生活中的打电话的场景比较相似。

我们来解析打电话的步骤:

  1. 通信方式有很多种,可以当面沟通、书信沟通、电话沟通、托人带话等等。这里张三和李四约定好都用电话沟通(确认通讯协议,这里指TCP/IP),张三给李四打电话(张三在这里的身份是客户端,而李四对应身份是服务端 身份也确认好了)。
  2. 双方打电话得有电话机(创建socket对象)
  3. 张三必须知道拨打对象的电话号码(知道服务端的ip和port),李四电话号码是123456(绑定套接字)
  4. 张三拨打李四电话(客户端连接服务端,connect连接)
  5. 被打电话的那一方听到电话响了(listen监听)
  6. 李四害怕是推销电话想着要跟他确认身份是不是张三,不是张三就准备挂断电话
  7. 接起电话确认对方身份,张三问是李四吗(三次握手中,第一次握手)
  8. 李四回答,我是李四。你是?(三次握手,第二次握手)
  9. 张三说你好李四,我是张三(三次握手,第三次握手)
  10. 确认过眼神遇上对的人,李四决定跟他继续谈话(accept接受连接请求)
  11. 接下来就开始长篇大论的攀谈(数据交互)
  12. 最终要挂电话了,张三对李四说那今天就讲到这里(四次挥手,第一次)
  13. 李四说行啊今天就讲到这里(四次挥手,第二次)
  14. 张三说那我挂断了啊(四次挥手,第三次)
  15. 李四说好的你挂吧(四次挥手,第四次)
  16. 挂断(结束)

阅读以上流程接下来我们来看看流程图就非常好理解了:

喵呜面试助手:一站式解决面试问题,你可以搜索微信小程序 [喵呜面试助手] 或关注 [喵呜刷题] -> 面试助手 免费刷题。如有好的面试知识或技巧期待您的共享!

相关文章:

Socket交互的基本流程?

TCP socket通信过程图 什么是网络编程,网络编程就是编写程序使两台连联网的计算机相互交换数据。怎么交换数据呢?操作系统提供了“套接字”(socket)的组件我们基于这个组件进行网络通信开发。tcp套接字工作流程都以“打电话”来生…...

css 分割线中间带文字

效果图 代码块&#xff08;自适应&#xff09; <div class"line"><span class"text">我是文字</span></div>.line{height:0;border-top:1px solid #000;text-align:center;}.text{position:relative;top:-14px;background-color:#…...

会不会激发对modern c++的新兴趣

可变参数好像很厉害的样子&#xff0c;会节省很多手写代码&#xff0c;让编译器自动帮我们生成代码 template<typename Fun, typename...Args> void invoke(Fun&& fun, Args&&...args) { fun(std::forward<Args>(args)...); } 任意函数包装器…...

Nginx服务器如何配合Java开发项目

Nginx服务器如何才能配合好相关的编程语言进行服务器搭建呢&#xff1f;下面我们就来看看有关的技术如何融合。希望大家有所收获。 在进行Nginx服务器建设的时候有很多语言的应用&#xff0c;其中Java 开发的web项目就是很常见的。下面我们就看看Nginx服务器如何才能与Java编程…...

【LeetCode-中等题】994. 腐烂的橘子

文章目录 题目方法一&#xff1a;bfs层序遍历 题目 该题值推荐用bfs&#xff0c;因为是一层一层的感染&#xff0c;而不是一条线走到底的那种&#xff0c;所以深度优先搜索不适合 方法一&#xff1a;bfs层序遍历 广度优先搜索&#xff0c;就是从起点出发&#xff0c;每次都尝…...

K8s部署单机mysql

文章目录 一、K8s部署单机mysql1.1 说明1.2 不足 二、部署三、检查 一、K8s部署单机mysql 1.1 说明 定制配置数据存放在configMapmysql数据放在/opt/mysql目录下(/opt/mysql目录需要事先创建)root账号密码使用环境变量env服务暴露方式为nodePort&#xff0c;端口30336 1.2 不…...

Midjourney学习(二)参数的基础

prompt的组成 prompt 可以由三部分组成&#xff0c; 第一部分是垫图部分&#xff0c;也就是一张网络图片 第二部分是文本描述内容 第三部分则是参数 参数列表 --aspect <value> 或者 --ar <value> 控制画面的比例&#xff0c;横竖比例 --version <value> -…...

Ubuntu安装Protobuf,指定版本

参考&#xff1a;https://github.com/protocolbuffers/protobuf#readme https://github.com/protocolbuffers/protobuf/blob/v3.20.3/src/README.md 其实官网的readme给的步骤很详细。 1.安装相关依赖 sudo apt-get install autoconf automake libtool curl make g unzip …...

没有使用sniffer dongle在windows抓包蓝牙方法分享

网上很多文章都是介绍买一个sniffer dongle来抓蓝牙数据,嫌麻烦又费钱,目前找到一个好方法,不需要sniffer就可以抓蓝牙数据过程,现分享如下: (1)在我资源附件找到相关安装包或者查看如下链接 https://learn.microsoft.com/zh-cn/windows-hardware/drivers/bluetooth/testing-bt…...

解决Debian系统通过cifs挂载smb后,中文目录乱码问题

解决Debian系统通过cifs挂载smb后&#xff0c;中文目录乱码问题 //$smb_server/share /mnt/nas_share cifs credentials/root/.smbcredentials,iocharsetutf8 0 0默认通过以上命令挂载smb&#xff0c;但是在查看文件目录时&#xff0c;中文乱码 解决问题方式&#xff1a; de…...

springboot整合jquery实现前后端数据交互

一 实施逻辑 1.1 前端 <!doctype html> <html lang"en"><head><meta charset"UTF-8"><meta name"Generator" content"EditPlus"><meta name"Author" content""><meta n…...

TypeScript 中的类型检查实用函数

TypeScript 中的类型检查实用函数 文章目录 TypeScript 中的类型检查实用函数一、概述二、代码实现 一、概述 在前端开发中&#xff0c;我们经常需要判断变量的类型以进行相应的操作或处理。TypeScript 提供了基础的类型检查&#xff0c;但有时我们需要更复杂或更灵活的类型检…...

JavaScript中的事件委托(event delegation)

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ JavaScript事件委托⭐ 事件冒泡&#xff08;Event Bubbling&#xff09;⭐ 事件委托的优点⭐ 如何使用事件委托⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启…...

ubuntu OCR 脚本

1. 百度 PaddleOCR 介绍 2. 环境安装 pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple # 进入 https://github.com/PaddlePaddle/PaddleOCR # 这里有个 requirements.txt pip install paddleocr -i https://mirror.baidu.com/pypi/simple pip instal…...

Go死码消除

概念: 死码消除(dead code elimination, DCE) 是一种编译器优化技术, 作用是在编译阶段去掉对程序运行结果没有任何影响的代码 和 逃逸分析[1],内联优化[2]并称为 Go编译器执行的三个重要优化 效果: 对于 const.go代码如下: package mainimport "fmt"func max(a, b i…...

基于改进莱维飞行和混沌映射的粒子群优化BP神经网络分类研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

12. 自动化项目实战

目录 1. 登录测试 2. 测试首页的帖子列表数不为0 3. 帖子详情页校验 4. 发布帖子 5. 退出登录 自动化项目实施的基本流程如下图所示&#xff1a; 手工测试用例、自动化测试用例。 1. 登录测试 校验登录后主页显示的用户名称和登录时输入的用户名是否相等。 public class…...

Window11下载安装jdk8-jdk11与环境变量的配置

目录 一、下载jdk 二、安装jdk 三、配置环境变量 四、检查JDK是否配置成功 一、下载jdk jdk8下载链接&#xff1a;请点击网址 jdk11下载链接&#xff1a;请点击网址 二、安装jdk 按照提示一步一步安装即可。 默认安装位置&#xff1a;C:\Program Files\Java 三、配置…...

Vector Search with OpenAI Embeddings: Lucene Is All You Need

本文是LLM系列文章&#xff0c;针对《Vector Search with OpenAI Embeddings: Lucene Is All You Need》的翻译。 使用OpenAI嵌入的向量搜索&#xff1a;Lucence是你所需的一切 摘要1 引言2 从架构到实现3 实验4 讨论5 结论 摘要 我们在流行的MS MARCO文章排名测试集上使用Lu…...

JS算法与树(二)

前言 二叉搜索树&#xff08;BST&#xff09;存在一个问题&#xff1a;当你添加的节点数够多的时候&#xff0c;树的一边可能会非常的深。而其他的分支却只有几层。 AVL树 为了解决上面的问题&#xff0c;我们提出一种自平衡二叉搜索树。意思是任何一个节点左右两侧子树的高度之…...

3步搞定电子课本下载,效率提升80%:教师与家长的教育资源获取神器

3步搞定电子课本下载&#xff0c;效率提升80%&#xff1a;教师与家长的教育资源获取神器 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具 项目地址: https://gitcode.com/GitHub_Trending/tc/tchMaterial-parser 在数字化教学日益普及的今…...

阿里通义Z-Image-Turbo效果展示:实测生成高质量图片案例分享

阿里通义Z-Image-Turbo效果展示&#xff1a;实测生成高质量图片案例分享 1. 为什么这款图像生成工具值得关注 在内容创作领域&#xff0c;高质量配图一直是提升作品吸引力的关键因素。传统方式要么需要专业设计技能&#xff0c;要么面临版权风险&#xff0c;而多数在线AI绘图…...

扩音器什么牌子音质好?领夹扩音器哪个品牌好性价比高?一次选对!

刚开始带课那几年&#xff0c;我对扩音器的重视程度其实不算高&#xff0c;更多精力都放在备课、安排课堂节奏和处理学生互动上。但课越上越多之后&#xff0c;我越来越清楚一件事&#xff1a;真正左右现场教学效率的&#xff0c;并不是板书有多整齐&#xff0c;也不是课件做得…...

别再只用Topic和Service了!ROS Action在无人机巡检项目中的三大高阶用法

别再只用Topic和Service了&#xff01;ROS Action在无人机巡检项目中的三大高阶用法 当你在凌晨三点调试无人机代码&#xff0c;发现巡检任务因为一个未处理的异常状态而卡死在空中&#xff0c;而所有日志都淹没在Topic的洪流中时&#xff0c;就会明白为什么ROS Action不是&quo…...

如何用pose-search在5分钟内构建智能人体姿态分析系统

如何用pose-search在5分钟内构建智能人体姿态分析系统 【免费下载链接】pose-search x6ud.github.io/pose-search 项目地址: https://gitcode.com/gh_mirrors/po/pose-search 你是否曾经想过为你的应用添加实时人体姿态识别功能&#xff0c;但又担心技术门槛太高&#x…...

墨语灵犀GPU算力适配指南:A10/A100/V100显卡部署性能与显存占用实测

墨语灵犀GPU算力适配指南&#xff1a;A10/A100/V100显卡部署性能与显存占用实测 1. 引言&#xff1a;当古典美学遇见现代算力 想象一下&#xff0c;你正在处理一份重要的海外文献&#xff0c;或者需要将一段优美的中文诗歌翻译成英文。你希望翻译结果不仅准确&#xff0c;更要…...

Dify工作流HTTP请求配置全攻略:从基础到进阶的系统优化指南

Dify工作流HTTP请求配置全攻略&#xff1a;从基础到进阶的系统优化指南 【免费下载链接】Awesome-Dify-Workflow 分享一些好用的 Dify DSL 工作流程&#xff0c;自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-…...

JESD204B时钟系统解析——从设备时钟到多帧时钟的协同设计

1. JESD204B时钟系统全景解析 第一次接触JESD204B协议时&#xff0c;我被它复杂的时钟系统搞得晕头转向。这个高速串行接口协议之所以难啃&#xff0c;很大程度上就是因为其独特的时钟架构设计。在实际项目中&#xff0c;我遇到过因为时钟配置不当导致数据传输失败的案例&…...

清华团队发布机器人版“GPT时刻”:UniDex让机械手看懂世界,零样本操控万物!

80%成功率&#xff0c;碾压式超越现有方案&#xff0c;灵巧手操控迎来“GPT”时刻这篇论文用一种极其优雅且强大的方式&#xff0c;解决了机器人领域一个长期存在的根本性难题&#xff1a;如何让形态各异、复杂无比的灵巧手&#xff0c;像人类一样&#xff0c;看一眼就能学会使…...

普里斯特利时间轴制作教程:使用chart-doctor创建精美历史时间线

普里斯特利时间轴制作教程&#xff1a;使用chart-doctor创建精美历史时间线 【免费下载链接】chart-doctor Sample files to accompany the FTs Chart Doctor column 项目地址: https://gitcode.com/gh_mirrors/ch/chart-doctor chart-doctor是GitHub加速计划中的一个实…...