关于UDP数据报引发“异步错误”的疑问

在UNP卷一第三版的第8章8.9小节中说到:如果udp服务器没有启动,udp客户端在使用sendto发送一行文本后,将会等待一个永远也不会出现的应答从而阻塞在recvfrom调用上。

由于服务器端不存在,那么客户端将得到ICMP差错报文,但是这个差错却不返回给UDP,因为recvfrom仅能返回errno值。

在这里有两个疑问:

1.recvfrom可以返回至少3个值:一个是函数的返回值,两个通过指针传入的形实参;因此recvfrom具备返回错误信息的条件。

2.ICMP差错报文会返回导致差错报文的信息:包括目的IP地址和目的端口。

事实上,我认为书本所说的理由并不能成立,不知道当初设计recvfrom这个API时为什么没有支持返回详细错误信息。

原文地址:https://www.cnblogs.com/pluse/p/6674617.html