type
status
date
slug
summary
tags
category
icon
password
相较 TCP 编程而言,UDP 编程要简单许多。其基本流程如下图所示:

其中大多数函数我们都讲过了,只有
sendto()
和recvfrom()
需要学习下。最后,我们将构建一个 daytime 服务器,来演示这个基本流程。1. sendto()
sendto()
函数,一般是用来给SOCK_DGRAM
类型的套接字发送数据的。sendto()
和send()
函数非常类似,最后两个参数dest_addr
和addrlen
是用来指定接收方地址的。2. recvfrom()
recvfrom()
函数,一般是用来给SOCK_DGRAM
类型的套接字接收数据的。recvfrom()
和recv()
函数非常类似,最后两个参数src_addr
和addrlen
是用来接收发送端地址的。3. 经典案例——daytime 服务器
准备好了吗?接下来,我们要构建一个 daytime 服务器!它的流程是这样的:
- 服务器端绑定一个众所周知的端口。
- 客户端给服务器端发送一个正文长度为 0 的消息。
- 服务器端收到消息后,会把当前时间返回给客户端。
- 客户端将收到的时间输出到标准输出。
总结归纳
这一章,我们学习了 UDP 编程。
- UDP 是一种数据报协议,非常类似我们人类社会邮寄明信片,它不需要建立连接。
- UDP 是没有上下文的,也就是说数据报与数据报之间是独立的,就像明信片与明信片之间是独立的一样。而 TCP 是有上下文的,段与段之间是有先后顺序关系的。
- UDP 使用
recvfrom()
和sendto()
时,需要两个额外的地址参数,用来接收或指定远端的地址。
参考文章
- UNIX Network Programming, Volume 1: The Sockets Networking API, 3rd Edition
欢迎您在底部评论区留言,我们一起交流学习~
- 作者:Thomas He
- 链接:https://notion-next-lovat-ten.vercel.app/article/networkprogramming/5
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章