且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《UNIX网络编程 卷1:套接字联网API(第3版)》——第8章 基本UDP套接字编程 8.1概述

更新时间:2022-06-16 01:04:58

本节书摘来自异步社区《UNIX网络编程 卷1:套接字联网API(第3版)》一书中的第8章,第8.1节,作者:【美】W. Richard Stevens , Bill Fenner , Andrew M. Rudoff著,更多章节内容可以访问云栖社区“异步社区”公众号查看

第8章 基本UDP套接字编程

8.1 概述

在使用TCP编写的应用程序和使用UDP编写的应用程序之间存在一些本质差异,其原因在于这两个传输层之间的差别:UDP是无连接不可靠的数据报协议,非常不同于TCP提供的面向连接的可靠字节流。然而相比TCP,有些场合确实更适合使用UDP,我们将在22.4节探讨这个设计选择。使用UDP编写的一些常见的应用程序有:DNS(域名系统)、NFS(网络文件系统)和SNMP(简单网络管理协议)。

图8-1给出了典型的UDP客户/服务器程序的函数调用。客户不与服务器建立连接,而是只管使用sendto函数(将在下一节介绍)给服务器发送数据报,其中必须指定目的地(即服务器)的地址作为参数。类似地,服务器不接受来自客户的连接,而是只管调用recvfrom函数,等待来自某个客户的数据到达。recvfrom将与所接收的数据报一道返回客户的协议地址,因此服务器可以把响应发送给正确的客户。

《UNIX网络编程 卷1:套接字联网API(第3版)》——第8章 基本UDP套接字编程   8.1概述

图8-1所示为UDP客户/服务器交互中发生的典型情形的时间线图。我们可以将该图和图4-1所示的TCP的典型交互进行比较。

本章中我们将介绍用于UDP套接字的两个新函数recvfrom和sendto,并使用UDP重写我们的回射客户/服务器程序。我们还将介绍connect函数在UDP套接字中的用法以及异步错误这个概念。