【发布时间】:2014-07-09 10:20:30
【问题描述】:
我的代码通过了一个打开的套接字。此套接字可以是 TCP 套接字 (AF_INET) 或 Unix 域套接字 (AF_UNIX)。
根据套接字的域,需要进行不同的处理。特别是如果套接字绑定到一个地址,那么我可能想以不同的方式 accept 传入连接。
确定我通过的套接字是unix域套接字还是TCP套接字的最佳方法是什么?该解决方案至少需要在 OS X 和 Linux 上运行。
getsockopt 似乎允许获取套接字的类型(例如 SOCK_STREAM 等),但不允许获取域。
getsockname 将为 OSX 上的 unix 域套接字返回零长度,但这正式是 bug,Linux 行为是 different。
【问题讨论】:
标签: sockets tcp unix-socket