4

我想为 Linux Socket API 编写一个 C++ 包装器。在 socket() ctor 中,请求地址族 (AF)。我不想再次在 connect() 签名中要求 AF,因为它已经在套接字的构造函数中给出。那么如何从现有套接字中获取 AF 呢?

4

2 回答 2

7

该死。找了半个小时左右。现在发布这个问题后,我立即找到了答案。

带有选项 SO_DOMAIN 的getsockopt([...]) (请参阅套接字选项

于 2012-11-11T13:42:38.180 回答
6

POSIX 标准的 getsockname 将有助于:

int getsockname(int socket, struct sockaddr *restrict address,
       socklen_t *restrict address_len);

它将填写给定的 struct sockaddr (成功后):

struct sockaddr {
    unsigned short    sa_family;  // <- that's what you looking for
    char              sa_data[14];  
}
于 2012-11-17T22:45:10.757 回答