Rom*_* R. 17
这是可能的,因为你通常会转换指针,而不是结构本身.你用自然语言做的意思是"请把这个指针socket structure视为指向一个指针internet socket structure".编译器重新解释指针没有问题.
以下是评论中更详细的描述:
A的sockaddr大小为16个字节 - 前两个字节是sa_family,剩下的14个字节sa_data是任意数据.A sockaddr_in也是16字节大小 - 前2个字节是sin_family(总是AF_INET),接下来的2个字节是sin_port,接下来的4个字节是sin_addr(IP地址),最后8个字节是sin_zeroIPv4中未使用的字节并提供只保证16个字节.这样,您可以先查看sockaddr.sa_family,如果是,AF_INET则将整体解释sockaddr为sockaddr_in.
A sockaddr_in不存储在sockaddr.sa_data字段内.整个sockaddr是整个sockaddr_in(当sockaddr.sa_family是AF_INET,这是).如果你拿一个sockaddr*指针并将其转换为sockaddr_in*指针,那么:
sockaddr.sa_family 是 sockaddr_in.sin_familysockaddr.sa_data是sockaddr_in.sin_portsockaddr_in.sin_addrsockaddr_in.sin_zero.| 归档时间: |
|
| 查看次数: |
8410 次 |
| 最近记录: |