收藏

认识Socket 套接字

分类: 基础知识篇 >> ESP32基础知识 发布于 2024-05-16 418次阅读0点赞0收藏

1. Socket 套接字

说到 Socket,就不得不提两个计算机专业词汇最糟糕的翻译:鲁棒性(Robustness) 和 套接字(Socket),翻译之后与没有翻译的效果一样,依然看不懂什么意思。
当涉及到网络通信时,Socket 是一个常见的概念。它是在计算机网络中实现通信的一种抽象概念或编程接口。通过 Socket,不同计算机之间可以建立连接并进行数据交换。
Socket 可以看作是一种通信端点,它使用 IP 地址和端口号来标识不同的设备和应用程序。每个 Socket 都与一个特定的协议相关联,例如 TCP 或 UDP,用于在网络上进行数据传输。
Socket 是通信的基石,是支持 TCP/IP 协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议(通常是 TCP 或 UDP),本地主机的IP地址,本地进程的协议端口,远地主机的 IP 地址,远地进程的协议端口。

从上图可以看到,建立 Socket 通信需要一个服务器端和一个客户端。对于客户端,则需要知道电脑端的 IP 和端口即可建立连接。(端口可以自定义,范围在 0~65535,注意不占用常用的80等端口即可。)
下面是 Socket 的一些关键概念:
-IP地址:在计算机网络中,每个设备都有一个唯一的 IP 地址,用于标识设备的位置。IP 地址由一系列数字组成,例如 IPv4 地址是由四个十进制数(0-255)组成,中间用点分隔,如 192.168.0.1。

  • 端口号:端口号用于标识一个特定的应用程序或服务,使数据可以传输到正确的目的地。端口号是一个数字,范围从 0 到 65535。0 到 1023 的端口号是为一些特定的服务保留的,例如HTTP的端口号是80,HTTPS的端口号是443。
  • Socket 类型:在 Socket 编程中,有两种常见的套接字类型:Stream Socket(流套接字)和 Datagram Socket(数据报套接字)。
    • Stream Socket(流套接字) 使用 TCP 协议,提供可靠的、面向连接的通信,确保数据的可靠性和按顺序的传输。
    • Datagram Socket(数据报套接字) 使用 UDP 协议,提供无连接的通信,适用于实时性要求高的应用,如音视频传输。
  • 客户端和服务器:在 Socket 通信中,通常有两个主要角色:客户端 和 服务器。
  1. 客户端 是发起连接请求的一方,通常是一个应用程序或设备。
  2. 服务器是提供服务的一方,它监听指定的端口号,并等待客户端的连接请求。
    通过 Socket,客户端和服务器可以建立连接,并通过发送和接收数据进行通信。客户端可以向服务器发送请求,并接收服务器的响应。服务器可以接收客户端的请求,并向客户端发送响应。
    在实际的 Socket 编程中,使用不同编程语言提供的 Socket API,如 C/C++ 的 socket 库、Python 的 socket 模块等,来创建、连接、发送和接收数据。这些 API 提供了一组函数和方法,开发者可以使用这些函数和方法来实现网络通信的各个方面。
    总而言之,Socket 是一种用于实现网络通信的抽象概念,通过使用 IP 地址和端口号,不同计算机之间的应用程序可以建立连接,并通过发送和接收数据进行通信。
    所以,socket 的出现只是可以更方便的使用 TCP/IP 协议栈而已,简单理解就是其对 TCP/IP 进行了抽象,形成了几个最基本的函数接口。比如 create,listen,accept,connect,read 和 write 等等。以下是通讯流程:
    以上的内容,简单来说就是如果用户面向应用来说,那么 ESP32 只需要知道通讯协议是 TCP 或 UDP、服务器的 IP 和端口号这 3 个信息,即可向服务器发起连接和发送信息。
VIP
购买
建议
意见
联系
客服
在线咨询

您可以与在线客服进行沟通获得帮助

工作日:8:00~22:00节假日:9:00~20:00

微信号: mpyos01

Q Q号: 1401211620

免费
福利
0.025407s