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