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

server/2024/9/22 23:08:38/

文章目录

  • 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/server/3298.html

相关文章

Swift-24-集合对象

数组Array 数组是值的有序集合,任何值都可以在数组中出现多次。数组通常用于值的有序很重要或者很有用的场合,但是值的顺序是否有意义并不是先决条件。与Objective-C不同的是,Swift的Array类型可以持有任何类型的值(对象和非对象…

【python脚本】课表信息生成 course_test(源代码)

在处理excel表格数据中编写的一个可以自动处理课表信息的脚本。 import os import openpyxl import re# 检查文件是否存在 file_name "course_info.xlsx" if os.path.exists(file_name):# 如果文件存在,先删除os.remove(file_name)# 创建一个新的 Excel…

html、css、QQ音乐移动端静态页面,资源免费分享,可作为参考,提供InsCode在线运行演示

CSDN将我上传的免费资源私自变成VIP专享资源,且作为作者的我不可修改为免费资源,不可删除,寻找客服无果,很愤怒,(我发布免费资源就是希望大家能免费一起用、一起学习),接下来继续寻找…

预处理详解

目录 1.预定义符号 2.#define定义常量 3.#define定义宏 4.带有副作用的宏参数 5.宏替换的规则 6.宏函数的对比 7.#和## 7.1 #运算符 7.2 ##运算符 8.命名约定 9.#undef 10.命令行定义 11.条件编译 12.头文件的包含 12.1头文件被包含的方式 12.1.1本地文件包含 …

Leetcode-48-旋转图像

题目说明 给定一个 n n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 示例 1: 给定 matrix [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋转输入…

单例设计模式

目录 单例模式的特点 线程安全问题 实现单例模式的八种方式 单例模式的优点 单例模式的缺点 单例模式的使用场景 单例设计模式是一种创建型设计模式,用于确保某个类只有一个实例,并提供一个全局访问点。这种模式通常在需要控制一个类的实例只能存在…

Git的SSH密钥配置

1: https和ssh的区别 很多朋友在用github管理项目的时候,都是直接使用https url克隆到本地,当然也有有些人使用ssh url克隆到本地。 使用https url克隆对初学者来说会比较方便,复制https url然后到git Bash里面直接用clone命令克隆到本地就好…

QT 串口助手 学习制作记录

QT 串口助手qt 学习制作记录 参考教程:​​​​​​QT初体验:手把手带你写一个自己的串口助手_qt设计串口助手的流程图-CSDN博客 Qt之串口编程(添加QSerialPort模块)_如何安装 qt串口模块教程-CSDN博客 串口调试助手&#xff1…