我有一个包含ipv4地址和远程主机端口的sockaddr_storage.我之前没有看过这些结构,我不知道如何将它转换为可以直接检索IP地址和端口号的结构.我试过谷歌搜索结构但没有找到任何东西.有
谢谢
您可以将指针转换为struct sockaddr_in *或struct sockaddr_in6 *并直接访问成员,但这将打开一堆关于别名违规和错误编译问题的蠕虫.更好的方法是使用NI_NUMERICHOST和NI_NUMERICSERV标志将指针传递给getnameinfo,以获取地址和端口的字符串表示形式.这样做的好处是它既支持IPv4又支持IPv6,无需额外代码,理论上也支持所有未来的地址类型.您可能必须将指针强制转换为void *(或显式结构sockaddr *,如果您使用的是C)将其传递给getnameinfo,但这不会导致问题.