如何解决EAFNOSUPPORT 语义的历史?
我看到 EAFNOSUPPORT
/ WSAEAFNOSUPPORT
错误号的三个不同“错误字符串”:
- POSIX:
实现不支持指定的地址族。
- BSD(
errno.h
,_sys_errlist[]
):协议族不支持地址族
- Windows®/Winsock2:
使用了与请求协议不兼容的地址
虽然后两者的语义几乎相同,但前者有很大不同(它不引用协议族;相反,它指出给定的地址族在特定地方不受支持)。
>我假设两种解释都是有效的,特别是考虑到 EPFNOSUPPORT
(“不支持的协议系列”)在 BSD 标头中被标记为 nōn-POSIX,但这种差异从何而来?顺便说一句,我对这个 errno 代码的后脑勺/历史(FSVO)理解比 BSD/Winsock 语义更符合 POSIX 语义……
我可以想象 POSIX 语义来自较旧的 BSD 套接字,后来添加了 EPFNOSUPPORT
所以 EAFNOSUPPORT
在 BSD 套接字中被重新指定(而 Winsock 只是采用了它),或者 POSIX 是故意写在一种不同的方式。
任何人都可以阐明这一点,也许可以解释一下历史(代码遗产等)?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。