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

ops/2024/9/22 22:49:18/

文章目录

  • 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.ppmy.cn/ops/3141.html

相关文章

2.4 Web容器配置:Tomcat

2.4 Web容器配置 2.4.1Tomcat配置1.常规配置2. HTTPS配置 *********** 2.4.1Tomcat配置 1.常规配置 在SpringBoot项目中,可以内置Tomcat、Jetly、Undertow、Netty等容器。 当开发者添加了spring-boot-starter-web依赖之后,默认会使用Tomcat作为Web容器…

qt之QSS常见属性

本文通过以下方式来设置QSS 控件名->setStyleSheet(""); 设置字体大小 font-size:18pt; 设置背景颜色 background-color:red; 或 background-color:#111111; 或 background-color:rgba(229,229,229,0); 注:rgba的最后一个值代表透明度 设置…

论文笔记:(INTHE)WILDCHAT:570K CHATGPT INTERACTION LOGS IN THE WILD

iclr 2024 spotlight reviewer 评分 5668 1 intro 由大型语言模型驱动的对话代理(ChatGPT,Claude 2,Bard,Bing Chat) 他们的开发流程通常包括三个主要阶段 预训练语言模型在被称为“指令调优”数据集上进行微调&…

原牛角源码(修罗bbs)全站程序打包带数据库备份

原牛角源码(修罗bbs)全站程序打包带数据库备份,牛角源码全站数据全站文件、插件打包分享给大家,有兴趣的可以搭建玩玩! conf文件夹中自己配置conf.php里面的数据库链接文件,默认管理账号:admin,密码&#…

Java插值查找知识点(含面试大厂题和源码)

插值查找(Interpolation Search)是一种在有序数组中查找特定元素的搜索算法。它是基于二分查找(Binary Search)的改进版本,特别适合当数据分布均匀时使用。插值查找的关键思想是利用数据的分布特性,预测要查…

鸿蒙OpenHarmony【搭建Ubuntu环境】

搭建Ubuntu环境 在嵌入式开发中,很多开发者习惯于使用Windows进行代码的编辑,比如使用Windows的Visual Studio Code进行OpenHarmony代码的开发。但当前阶段,大部分的开发板源码还不支持在Windows环境下进行编译,如Hi3861、Hi3516…

英语日常用语柯桥职场英语学习去哪里?专业语言培训推荐泓畅学校

“摸鱼”的英语表达 职场,总有些看似努力工作的同事,很可能是深藏不漏的“摸鱼圣手”。 但“摸鱼”的英文表达绝对不是“touch fish”这么简单!上班摸鱼,就是不好好干活、浪费时间,所以“loaf”这个单词有必要了解一下…

鸿蒙原生应用元服务-访问控制(权限)开发场景与权限声明

一、场景介绍 应用的APL(Ability Privilege Level)等级分为normal、system_basic和system_core三个等级,默认情况下,应用的APL等级都为normal等级。权限类型分为system_grant和user_grant两种类型。 二、配置文件权限声明 应用需要…