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