当前位置:C++技术网 > 精选软件 > 在Socket编程中,SOCKADDR_IN的后缀IN是什么意思

在Socket编程中,SOCKADDR_IN的后缀IN是什么意思

更新时间:2016-03-10 23:08:32浏览次数:1+次

    在Socket编程时,SOCKADDR_IN结构体的IN后缀总是让我感觉不适,也不知道怎么来的缩写,勉强记忆也很容易有忘记,或者就还是很容易混淆。为了学的清清楚楚,就彻底研究了一下,理了一下思路,也找到了IN后缀的含义,也促使了对这个结构体使用的理解,对于socket编程的学习有很大的作用。

    SOCKADDR宏是sockaddr结构体的别名,而sockaddr表示的是socket的套接字地址。sockaddr结构体存储地址家族和地址信息,地址信息包含IP地址和端口。不过,sockaddr表示的通用的套接字地址。

    看这个结构体定义:


struct sockaddr
{
    unsigned short sa_family;
    char sa_data[14];
};

    第二个成员只是一个数组,并没有格式化某一种格式,这也是通用格式的意思。而我们现在主流的是Internet互联网,使用TCP/IP以太网互联互通。
    所以这个通用的socket地址结构体就被具体化,就出现了sockaddr_in,对应的宏就是SOCKADDR_IN了。那么也就是说,SOCKADDR_IN就是TCP/IP网络体系中的专用套接字地址表示结构体。
    对比通用地址结构体,这个命名上多了_IN(_in),现在提到的互联网也就是基于TCP/IP模型的,所以Internet能够与TCP/IP上等号。所以,_IN(_in)后缀就是Internet的前两个字母了
    如果你之前对此一直很模糊,这里可以给你一个明确的后缀IN的解释,也可以通过这种命名解释让你更好的理解这个结构体的作用。