当前位置:网站首页>【Socket】①Socket技术概述
【Socket】①Socket技术概述
2022-07-06 19:10:00 【后厂村路蔡徐坤】

一、概述
我们在设计软件系统的时候,经常会有与其他软件进行网络通信的需求。现在,大多的网络通信都是基于TCP/IP协议进行,而底层的TCP/IP协议、流程都较为繁琐,socket编程接口提供了一种简单的TCP/IP操作方式。
- 需求:软件进程之间需要网络通讯进行信息交互。
- TCP/IP协议:是一种数据传输的方案。
- Socket接口:是网络通信端点的抽象,一种可以屏蔽TCP/IP繁琐的底层操作的工具。
应用程序的信息通讯流程,如图所示:
二、TCP与UDP工作流程、区别
参考:https://blog.csdn.net/weixin_47021806/article/details/124883559
(一)TCP/UDP工作流程
1、UDP通信工作流程
| 服务器端 | 创建socket | 绑定地址/端口 | 发送/接收数据 | 关闭 |
|---|---|---|---|---|
| 客户端 | 创建socket | ---- | 发送/接收数据 | 关闭 |

2、TCP通信工作流程
| 服务器端 | 创建socket | 绑定地址/端口 | 转化为被动连接(监听) | 接收客户端连接 | 接收/发送数据 | 关闭 |
|---|---|---|---|---|---|---|
| 客户端 | 创建socket | – | – | 连接服务器 | 发送/接收数据 | 关闭 |

- socket()方法:是用来创建一个套接字,有了套接字就可以通过网络进行数据的收发。这也是为什么进行网络通信的程序首先要创建一个套接字。创建套接字时要指定使用的服务类型,使用 TCP 协议选择流式服务(SOCK_STREAM)。
- bind()方法:是用来指定套接字使用的 IP 地址和端口。IP 地址就是自己主机的地址,如果主机没有接入网络,测试程序时可以使用回环地址“127.0.0.1”。端口是一个 16 位的整形值,一般 0-1024 为知名端口,如 HTTP 使用的 80 号端口。这类端口一般用户不能随便使用。其次,1024-4096 为保留端口,用户一般也不使用。4096 以上为临时端口,用户可以使用。在Linux 上,1024 以内的端口号,只有 root 用户可以使用。
- listen()方法:是用来创建监听队列。监听队列有两种,一个是存放未完成三次握手的连接,一种是存放已完成三次握手的连接。listen()第二个参数就是指定已完成三次握手队列的长度。
- accept():方法处理存放在 listen 创建的已完成三次握手的队列中的连接。每处理一个连接,则accept():返回该连接对应的套接字描述符。如果该队列为空,则 accept 阻塞。
- connect():方法一般由客户端程序执行,需要指定连接的服务器端的 IP 地址和端口。该方法执行后,会进行三次握手,建立连接。
- send()方法:用来向 TCP 连接的对端发送数据。send()执行成功,只能说明将数据成功写入到发送端的发送缓冲区中,并不能说明数据已经发送到了对端。send()的返回值为实际写入到发送缓冲区中的数据长度。
- recv()方法:用来接收 TCP 连接的对端发送来的数据。recv()从本端的接收缓冲区中读取数据,如果接收缓冲区中没有数据,则 recv()方法会阻塞。返回值是实际读到的字节数,如果
- recv()返回值为 0, 说明对方已经关闭了 TCP 连接。
- close():方法用来关闭 TCP 连接。此时,会进行四次挥手。
3、TCP与UDP通信区别
(1)操作难易
UDP是一种无连接协议,因此不需要像TCP一样listen和accept,操作简单
UDP服务器:创建socket、绑定端口、收发操作、关闭socket
TCP服务器:创建socket、绑定端口、监听端口、接收连接、收发操作、关闭socket
(2)重传机制与时延
UDP传输的消息如果在网络上丢失了,就丢失了。UDP协议本身没有重传机制。
而TCP协议底层有消息验证是否到达,如果丢失,发送方会重传的机制。
UDP:可以保证实时性
TCP:可以保证完整性
(3)消息次序问题
TCP协议通信双方的信息数据就像流动在管道中,是有明确的先后次序的。
发送方应用 先发送的信息肯 先被接收方应用先接收的 。而UDP协议发送的是一个个的独立的报文,接收方应用接收到的次序不一定和发送的次序一致。
(4)TCP优缺点:
优点:
1.TCP提供以认可的方式显式地创建和终止连接。
2.TCP保证可靠的、顺序的(数据包以发送的顺序接收)以及不会重复的数据传输。
3.TCP处理流控制。
4.允许数据优先
5.如果数据没有传送到,则TCP套接口返回一个出错状态条件。
6.TCP通过保持连续并将数据块分成更小的分片来处理大数据块。—无需程序员知道
缺点: TCP在转移数据时必须创建(并保持)一个连接。这个连接给通信进程增加了开销,让它比UDP速度要慢。
(5)UDP优缺点:
1.UDP不要求保持一个连接
2.UDP没有因接收方认可收到数据包(或者当数据包没有正确抵达而自动重传)而带来的开销。
3.设计UDP的目的是用于短应用和控制消息
4.在一个数据包连接一个数据包的基础上,UDP要求的网络带宽比TDP更小。
三、C/S架构中的服务端与客户端方案选择
1、服务器需要绑定IP和端口
2、Tcp需要服务器端先开机
边栏推荐
- [C # notes] use file stream to copy files
- Apifox,你的API接口文档卷成这样了吗?
- 电气工程及其自动化
- Application analysis of face recognition
- Halcon instance to opencvsharp (C openCV) implementation -- bottle mouth defect detection (with source code)
- 一文读懂Faster RCNN
- 人脸识别应用解析
- Web3的先锋兵:虚拟人
- STM32 project -- Topic sharing (part)
- GEE升级,可以实现一件run tasks
猜你喜欢

Lumion 11.0 software installation package download and installation tutorial

Five reasons for clothing enterprises to deploy MES management system

Linear list --- circular linked list
![[paper reading | deep reading] rolne: improving the quality of network embedding with structural role proximity](/img/21/59c4d61b22e7d021b7a72a64a16b48.png)
[paper reading | deep reading] rolne: improving the quality of network embedding with structural role proximity

Niuke programming problem -- double pointer of 101 must be brushed

Remember the problem analysis of oom caused by a Jap query
![[Mori city] random talk on GIS data (II)](/img/5a/dfa04e3edee5aa6afa56dfe614d59f.jpg)
[Mori city] random talk on GIS data (II)

Derivative, partial derivative, directional derivative
![[server data recovery] data recovery case of a Dell server crash caused by raid damage](/img/29/e07bf1f8eae9be19f6eed69be5642d.jpg)
[server data recovery] data recovery case of a Dell server crash caused by raid damage

Web3's need for law
随机推荐
Difference and the difference between array and array structure and linked list
fasterxml ToStringSerializerBase报错
CSDN summer camp course project analysis
Niuke programming problem -- double pointer of 101 must be brushed
Use of pgpool II and pgpooladmin
普通测试年薪15w,测试开发年薪30w+,二者差距在哪?
leetcode:736. LISP syntax parsing [flowery + stack + status enumaotu + slots]
3 -- Xintang nuc980 kernel supports JFFS2, JFFS2 file system production, kernel mount JFFS2, uboot network port settings, and uboot supports TFTP
慧通编程入门课程 - 2A闯关
写作系列之contribution
Mmdetection3d loads millimeter wave radar data
postgresql 之 数据目录内部结构 简介
What are the applications and benefits of MES management system
C#/VB.NET 删除Word文檔中的水印
1 -- Xintang nuc980 nuc980 porting uboot, starting from external mx25l
数字滚动增加效果
Application analysis of face recognition
Code line breaking problem of untiy text box
Have fun | latest progress of "spacecraft program" activities
Halcon instance to opencvsharp (C openCV) implementation -- bottle mouth defect detection (with source code)