可以recv返回EHOSTUNREACH吗?

时间:2015-10-11 06:06:59

标签: sockets unix recv

根据Stevens的Unix网络编程,当使用readline \ recv时可以返回EHOSTUNREACH。 但是,在linux手册页中,recv。

无法接收EHOSTUNREACH

谁是对的?

1 个答案:

答案 0 :(得分:0)

如果通信中发生错误,将在套接字上设置错误,并与下一个与套接字相关的系统调用一起传递。通过向目标发送UDP数据包并使ICMP无法访问,可以触发EHOSTUNREACH错误(除此之外)。由于此ICMP消息仅在send调用完成后才返回,因此它不会返回send,而是仅返回到套接字上的下一个系统调用,也可能是recv

因此我建议在Linux中也可以返回此错误,但我可能错了。通常Linux不是UNIX,系统发展和文档通常是有缺陷的。如果你在各种平台上查看recv的文档,你会发现OpenBSD documents EHOSTUNREACHABLE可能出现错误,而FreeBSD,NetBSD,Linux ......则没有。我建议你更好地期待意外:)