欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > 计算机网络 | 应用层(6) -- 套接字编程

计算机网络 | 应用层(6) -- 套接字编程

2025/4/30 0:12:15 来源:https://blog.csdn.net/mooridy/article/details/147566102  浏览:    关键词:计算机网络 | 应用层(6) -- 套接字编程

 💓个人主页:mooridy
💓专栏地址:《计算机网络:自顶向下方法》 大纲式阅读笔记_mooridy的博客-CSDN博客

💓本博客内容为《计算机网络:自顶向下方法》第二章应用层第七节知识梳理
关注我🌹,和我一起学习更多计算机的知识~
🔝🔝🔝

目录

套接字编程:生成网络应用

基本概念

套接字(Socket)

工作原理

UDP 套接字编程

UDP(用户数据报协议)特点

流程

服务器端流程

客户端流程

TCP 套接字编程

TCP 特点

流程

服务器端流程

客户端流程


套接字编程:生成网络应用

基本概念

套接字(Socket)

就像是不同计算机之间进行通信的 “端点”。每个套接字都有一个对应的 IP 地址和端口号,IP 地址用于标识网络中的计算机,而端口号则用于标识计算机上的特定应用程序。通过 IP 地址和端口号,数据可以准确地从一个套接字传输到另一个套接字。

工作原理

  • 创建套接字:在通信的双方,首先需要创建一个套接字对象。这个套接字对象将作为数据传输的接口。
  • 绑定地址:服务器端需要将套接字绑定到一个特定的 IP 地址和端口号上,以便客户端能够找到它。
  • 监听连接:服务器端套接字开始监听指定端口,等待客户端的连接请求。
  • 建立连接:客户端套接字尝试连接到服务器端的指定地址和端口。服务器端接受连接后,双方就建立了一个通信通道。
  • 数据传输:连接建立后,双方可以通过套接字发送和接收数据。
  • 关闭连接:通信结束后,双方关闭套接字,释放系统资源。

UDP 套接字编程

UDP(用户数据报协议)特点

  • 客户端与服务器之间没有 “连接”,在发送数据之前没有握手过程。
  • 发送方会明确地将目标 IP 地址和端口号附加到每个数据包上。
  • 接收方会从接收到的数据包中提取发送方的 IP 地址和端口号。
  • UDP 传输的数据可能会丢失,或者接收到的数据可能是乱序的。
  • 从应用程序的角度来看,UDP 在客户端和服务器之间提供不可靠的字节组(“数据报”)传输。

流程

服务器端流程
  1. 创建套接字:使用 socket(AF_INET, SOCK_DGRAM) 创建一个 UDP 套接字,AF_INET 表明采用 IPv4 地址族,SOCK_DGRAM 表示这是数据报套接字 。同时指定一个端口号 x ,用于监听客户端发来的数据报。
  2. 读取数据报:服务器通过 serverSocket 等待接收来自客户端的数据报。UDP 数据报是独立的消息单元,服务器从该套接字接收这些单元。
  3. 回复数据报:当服务器接收到客户端的数据报并处理后,要向客户端发送回复。回复时需要指定客户端的地址和端口号,以便客户端能正确接收,回复通过 serverSocket 发送出去。
客户端流程
  1. 创建套接字:同样使用 socket(AF_INET, SOCK_DGRAM) 创建 UDP 套接字,客户端套接字用于与服务器通信。
  2. 发送数据报:客户端创建一个包含目标服务器 IP 地址和端口号 x 的数据报,然后通过 clientSocket 将数据报发送给服务器。在发送数据报时,客户端不需要与服务器提前建立连接。
  3. 读取数据报:客户端从 clientSocket 接收服务器发回的回复数据报。
  4. 关闭套接字:通信完成后,客户端关闭 clientSocket ,释放相关资源。

TCP 套接字编程

TCP 特点

  • 客户端必须与服务器建立联系,服务器进程必须首先处于运行状态,且服务器必须创建一个用于接收客户端连接的套接字(好比一扇 “门”)。
  • 客户端通过创建一个 TCP 套接字,并指定服务器进程的 IP 地址和端口号与服务器建立联系。当客户端创建套接字时,客户端的 TCP 会与服务器的 TCP 建立连接。
  • 当服务器收到客户端的连接请求时,服务器的 TCP 会创建一个新的套接字,供服务器进程与该特定客户端进行通信。这使得服务器能够与多个客户端进行通信,源端口号用于区分不同的客户端。
  • 从应用程序的角度来看,TCP 在客户端和服务器之间提供可靠的、按序的字节流传输(就像一个 “管道”)。

流程

服务器端流程
  1. 创建监听套接字:服务器使用 socket() 创建一个 TCP 套接字,并绑定到特定端口号 x ,这个套接字用于监听客户端的连接请求,就像在门口站岗,等待有人敲门。
  2. 等待连接请求:通过 serverSocket.accept() 方法,服务器进入阻塞状态,一直等待客户端的连接请求。一旦有客户端请求连接,就会创建一个新的套接字 connectionSocket ,专门用于和这个客户端进行通信。这就好比门卫接待访客后,给访客安排一个单独的房间进行交流。
  3. 读取请求与回复:使用 connectionSocket 读取客户端发送过来的请求信息,然后根据请求进行处理,并向 connectionSocket 写入回复信息发送给客户端。
  4. 关闭连接套接字:通信结束后,关闭 connectionSocket ,释放相关资源。不过要注意,serverSocket 一般不会关闭,而是继续监听新的客户端连接请求。
客户端流程
  1. 创建套接字并连接:客户端使用 socket() 创建一个 TCP 套接字,然后通过这个套接字向服务器的指定主机 ID 和端口号 x 发起连接请求,尝试与服务器建立连接。
  2. 发送请求与接收回复:连接建立成功后,客户端通过 clientSocket 向服务器发送请求信息,然后等待并从 clientSocket 读取服务器返回的回复信息。
  3. 关闭套接字:通信完成后,客户端关闭 clientSocket ,释放占用的资源。

编辑

分享

用Python语言编写一个简单的UDP套接字通信程序

详细解释一下在网络编程中IP地址和端口号是如何协同工作的

套接字编程和其他网络编程模型相比有哪些优势和劣势

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词