unp读书笔记——udp套接字编程
来源:互联网 发布:淘宝服饰平铺拍摄布光 编辑:程序博客网 时间:2024/04/30 08:03
今日闲来无事,所以打算记录容易被忽略的udp的细节——已连接的UDP套接字和未连接的UDP套接字。
试想一种场景:
服务器进程没有启动,客户端启动启动udp回射进程,发送一行字符串,这时客户端回射进程是永远阻塞与recvfrom等待一个永不出现的服务器应答,还是显示出错信息呢?
1、当我们的客户端UDP套接字没有使用connect指定服务端的地址时,我们称为使用了未连接的UDP套接字,这时客户端会永远阻塞在recvfrom调用等待一个永不出现的服务器应答。
2、当我们的客户端UDP套接字使用connect指定服务端的地址,我们称为使用了已连接的UDP套接字,这时套接字会返回异步错误。这个错误由ICMP提供,read error: Connection refused。
recvfrom异步错误的返回条件:已连接的UDP套接字
首先说明一点,UDP的输出操作,例如sendto,成功返回仅仅表示在接口输出队列中,具有存放所形成的IP数据报的控件。
recvfrom可以返回的信息仅有errno值,它没有办法返回出错数据报的目的IP地址和目的UDP端口。因此,udp的设计决定:除非套接字已经连接,否则异步错误是不会返回到UDP套接字的。
除此,已连接的UDP套接字相比未连接的UDP套接字,有了三个变化:
(1)已连接的UDP套接字不用给输出操作指定目的IP地址和目的端口号。
即,我们不使用sendto,改为write或send。
(2)我们不必使用recvfrom来获悉数据报的发送者,而改用read,recv或recvmsg。因为已连接的UDP套接字,由内核为输入操作返回的数据报只有来自connect所指定连接对等方的数据报。
(3)由已连接UDP套接字引发的异步错误会返回给它们的进程,而未连接的UDP套接字不会接受任何异步错误。
已连接的UDP套接字:
- unp读书笔记——udp套接字编程
- apue和unp的学习之旅10——基本udp套接字编程
- UNP函数笔记六: 基本UDP套接字编程
- UNP总结 Chapter 8 基本UDP套接字编程
- UNP卷一学习笔记:基本UDP套接字编程
- UNP笔记(2)——基本套接字编程
- UNP——Chapter 3:套接字编程简介
- UNP——Chapter 4:基本TCP套接字编程
- UNP学习笔记(第八章 基本UDP套接字编程)
- UNP学习:基本套接字编程
- Socket套接字编程(二)——UDP编程
- UNIX网络编程——基本UDP套接字编程
- Unix网络编程—基本UDP套接字编程
- UDP套接字编程
- UDP套接字编程
- UDP套接字编程
- UDP套接字编程
- UDP套接字编程
- 简单排序
- 此图片来自微信公众平台 未经允许不可引用
- cannot be resolved to absolute file path because it does not reside in the file system
- git repo svn 的使用
- web.xml文件详解
- unp读书笔记——udp套接字编程
- SpringIoC深入理解
- C++实验4:星号符
- Python基础入门(五)- python的数据类型
- 动态规划练习09:移动路线
- 有必要更了解final
- C++自由存储对象
- 预置第三方apk到MTK项目相关问题总结
- HTML5+JavaScript-ES6移动端2D飞行射击游戏