【TCP套接字编程,UDP套接字编程】

news2024/9/20 14:31:44

文章目录

  • TCP套接字编程
    • Socket编程
    • Socket 编程
    • TCP套接字编程
    • TCPsocket编程
    • C/S socket 交互: TCP
    • 数据结构 sockaddr_in
    • 数据结构 hostent
  • UDP套接字编程
    • UDP Socket编程
    • Client/server socket 交互: UDP

TCP套接字编程

Socket编程

应用进程使用传输层提供的服务才能交换报文。实现应用层协议,实现应用。
TCP/IP:应用进程使用Socket API访问传输服务
地点:界面上的SAP(Socket)方式:Socket API
目标:学习如何构建能借助sockets进行通信的C/S应用程序
socket:分布式应用进程之间的门,传输层协议提供的端到端的服务接口
在这里插入图片描述

Socket 编程

2种传输层服务的socket类型:

  • TCP:可靠的,字节流的服务
  • UDP:不可靠(数据UDP数据报)服务

TCP套接字编程

套接字:应用进程与端到端传输协议(TCP或UDP)之间的门户
TCP服务:从一进程向另一个进程可靠地传输字节流
服务器首先运行,等待连接建立
1.服务器进程必须先处于运行状态

  • 创建欢迎socket
  • 和本地端口捆绑
  • 在欢迎socket上阻塞式等待接受用户的连接

客户端主动和服务器创建连接:
2.创建客户端本地套接字(隐式捆绑到本地port)

  • 指定服务器进程的IP地址和端口号,与服务器进程连接
    3.当与客户端连接请求到来时
  • 服务器接受来自于用户端的请求,解除阻塞等待,返回一个新的socket(与欢迎socket不一样),与客户端通信
    • 允许服务器与多个客户端通信
    • 使用源IP和源端口来区分不同的客户端
      4.连接API调用有效时,客户端IP与服务器建立了连接
      从应用程序的角度
      TCP在客户端和服务端进程之间提供了可靠的,字节流(管道)服务

TCPsocket编程

C/S模式的应用案例:
1)客户端从标准输入装置读取一行字符,发送给服务器
2)服务器从socket读取字符
3)服务器将字符转换成大写,然后返回给客户端
4)客户端从socket中读取一行字符,然后打印出来
实际上,这里描述了C-S之间交互的动作次序

C/S socket 交互: TCP

在这里插入图片描述

数据结构 sockaddr_in

在这里插入图片描述

数据结构 hostent

在这里插入图片描述

UDP套接字编程

UDP Socket编程

UDP: 在客户端和服务器之间没有连接

  • 没有握手
  • 发送端在每一个报文中明确地指定目标的IP地址和端口号
  • 服务器必须从收到的分组中提取出发送端的IP地址和端口号

UDP: 传送的数据可能乱序,也可能丢失

从应用程序的角度

UDP 为客户端和服务器提供
不可靠的字节组的传送服务

Client/server socket 交互: UDP

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1597461.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解锁创意无限,体验全新Adobe Illustrator 2021 for mac/Win中文版

在数字化创意的浪潮中,Adobe Illustrator 2021中文版无疑是设计师们的得力助手。这款软件集高效、便捷、创新于一体,无论是Mac还是Windows用户,都能在其中找到属于自己的创意空间。 Adobe Illustrator 2021中文版延续了其强大的矢量图形处理…

mybash---打造自己的命令解释器

目前我们Linux的系统默认的命令解释器是bash; 命令解释器(也称为命令行解释器或shell)是计算机操作系统中的一个重要组件,它负责接收用户输入的命令,并解释和执行这些命令。其实命令解释器就是解析命令,执行命令,输出反馈; 1.命令…

【c 语言】声明了一个指针,会给指针分配内存吗?

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:C语言 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步&…

电商API数据采集接口|跨境卖家在追求精细化运营过程中商品选品以及上架物流几方面应用

跨境电商行业与IT行业资深从业者,知名跨境电商人工智能软件创始人。擅长用RPA机器人技术、aPaaS业务应用平台以及AI人工智能技术为跨境卖家提供新的运营模式和思路,用技术的手段来解决跨境行业的痛点问题。 现在跨境卖家都在追求精细化运营,在…

【Git】Git的安装与常用命令

Git的安装与常用命令 一、Git的安装 (一)下载 官网下载:https://git-scm.com/downloads 镜像网站:https://registry.npmmirror.com/binary.html?pathgit-for-windows/ (二)安装 双击安装&#xff0c…

06-vscode+espidf开发调试方法(内置JTAG调试)

使用VS Code和ESP-IDF进行ESP32开发和调试 在我们搭建 IDF 框架后,OpenOCD 已经自动下载好了, 我们通过 JTAG 接口连接使用 OpenOCD 进行调试。而ESP32芯片中内置 了JTAG 电路,无需额外芯片即可调试,更加方便,所以这里…

开源相机管理库Aravis例程学习(三)——注册回调multiple-acquisition-callback

开源相机管理库Aravis例程学习(三)——回调multiple-acquisition-callback 简介例程代码arv_camera_create_streamArvStreamCallbackTypeArvStreamCallback 简介 本文针对官方例程中的:02-multiple-acquisition-callback做简单的讲解。 ara…

ppt里的音乐哪里来的?

心血来潮,想照着大神的模板套一个类似于快闪的ppt。 ppt里是有一段音乐的,那段音乐就是从幻灯片第二页开始响起的。 但是我就找不到音乐在哪。 甚至我把ppt里的所有素材都删除了,再看动画窗格,仍然是空无一物,显然&…

PyCharm 2024.1 发布:全面升级,助力高效编程!

PyCharm 2024.1 发布:全面升级,助力高效编程! 文章目录 PyCharm 2024.1 发布:全面升级,助力高效编程!摘要引言 Hugging Face:模型和数据集的快速文档预览针对 JavaScript 和 TypeScript 的全行代…

基于有序抖动块截断编码的水印嵌入和提取算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 噪声测试 旋转测试 压缩测试 2.算法运行软件版本 matlab2022a 3.部分核心程序 ............................................................…

基于深度学习网络的鞋子种类识别matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 load gnet.mat % 使用训练好的网络对验证数据进行分类预测 [Predicted_Label, Probability] c…

基于Canvas实现的简历编辑器

基于Canvas实现的简历编辑器 大概一个月前,我发现社区老是给我推荐Canvas相关的内容,比如很多 小游戏、流程图编辑器、图片编辑器 等等各种各样的项目,不知道是不是因为我某一天点击了相关内容触发了推荐机制,还是因为现在Canvas…

开源模型应用落地-chatglm3-6b-批量推理-入门篇(四)

一、前言 刚开始接触AI时,您可能会感到困惑,因为面对众多开源模型的选择,不知道应该选择哪个模型,也不知道如何调用最基本的模型。但是不用担心,我将陪伴您一起逐步入门,解决这些问题。 在信息时代&#xf…

python将pdf转为docx

如何使用python实现将pdf文件转为docx文件 1.首先要安装pdf2docx库 pip install pdf2docx2.实现转换 from pdf2docx import Converterdef convert_pdf_to_docx(input_pdf, output_docx):# 创建一个PDF转换器对象pdf_converter Converter(input_pdf)# 将PDF转换为docx文件pdf…

解读MongoDB官方文档获取mongo7.0版本的安装步骤与基本使用

mongo式一款NOSQL数据库,用于存储非结构化数据,mongo是一种用于存储json的数据数据,可以通过mongo提供的命令解析json获取想要的值。 数据模型 了解关系数据库会很熟悉database,table,row,column的概念,分别是数据库&#xff0c…

leetcode代码记录(Z 字形变换

目录 1. 题目:2. 我的代码:小结: 1. 题目: 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:…

开源模型应用落地-chatglm3-6b-gradio-入门篇(七)

一、前言 早前的文章,我们都是通过输入命令的方式来使用Chatglm3-6b模型。现在,我们可以通过使用gradio,通过一个界面与模型进行交互。这样做可以减少重复加载模型和修改代码的麻烦, 让我们更方便地体验模型的效果。 二、术语 2.…

使用 Fetch API 执行 GraphQL 查询和变体

GraphQL 简介 GraphQL 是从远程服务器查询数据的强大工具,也是我构建 API 的首选方式。对一些人来说,学习它可能有一定难度,因为教程通常使用 Apollo 或 Relay 等工具进行编写。 这些工具很不错,但通常更适用于复杂项目。在某些…

Python基于Django的微博热搜、微博舆论可视化系统

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#x1f3…

【TEE论文】IceClave: A Trusted Execution Environment for In-Storage Computing

摘要 使用现代固态硬盘(SSD)的存储中计算使开发人员能够将程序从主机转移到SSD上。这被证明是缓解I/O瓶颈的有效方法。为了促进存储中计算,已经提出了许多框架。然而,其中很少有框架将存储中的安全性作为首要任务。具体而言&…