Internet的地址结构
对Internet地址结构的大致认识是类似对象设计,各个不同的协议簇共享一个通用的地址类型,但是每一种具体的协议都有自己的解释。今天由于要做一个地址的提取和映射,所以仔细看一下细节,记录如下:
struct sockaddr
是通用的地址,适应不同协议的地址类型。
struct sockaddr_in
是互联网域的地址。
这两个结构是对等的,互相转换。而通常库函数需要的是sockaddr的指针,所以需要强制转换一下避免警告。
另外,PF和AF定义的family类型,通常都是一样的值。
sockaddr_in中的端口和地址,都是网络字节序,所以要用函数转换一下:
my_addr.sin_port = htons(MYPORT); /* short, 网络字节序 */
地址也有几个函数进行转换:
inet_aton用于将字符串的ip地址转换为网络序的4字节地址(inet_addr不建议使用);
inet_ntoa用于将4字节地址转换为ip字符串;