Man*_*d3r 4 c c++ linux network-programming
我想为Linux Socket API编写一个C++包装器.在socket()ctor中请求地址族(AF).我不想再次在connect()签名中要求AF,因为它已经在socket的构造函数中给出了.那么如何从现有插座中获取AF?
该死的.搜索了大约半个小时.在发布这个问题后,我立即找到了答案.
带有选项SO_DOMAIN的getsockopt([...])(参见套接字选项)
POSIX标准的getsockname将有助于:
int getsockname(int socket, struct sockaddr *restrict address,
socklen_t *restrict address_len);
Run Code Online (Sandbox Code Playgroud)
它将填充给定的struct sockaddr(成功时):
struct sockaddr {
unsigned short sa_family; // <- that's what you looking for
char sa_data[14];
}
Run Code Online (Sandbox Code Playgroud)