我想为Linux Socket API编写一个C ++包装器。在socket()ctor中请求地址族(AF)。我不想再次在connect()签名中要求AF,因为它已经在socket的构造函数中给出了。那么如何从现有的插座中获取AF?
答案 0 :(得分:7)
该死。搜索了大约半个小时。发布此问题后,我立即找到了答案。
getsockopt([...])选项TO DOMAIN(设置socket options)
答案 1 :(得分:5)
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];
}