地址赋值时 sin_addr.S_un.S_addr 与sin_addr.s_addr 的问题。为什么在MSDN里面的struct in_addr 定义中没有s_addr 这个成员???

时间:2021-10-28 01:29:12


在给地址赋值的时候:
struct sockaddr_in   tcpaddr;
 
tcpaddr.sin_family = AF_INET;
tcpaddr.sin_port = htons(5000);    
tcpaddr.sin_addr.s_addr = htonl(INADDR_ANY); 

但是我在MSDN里面查不到 s_addr 

struct in_addr {
  union {
          struct { u_char s_b1,s_b2,s_b3,s_b4; }   S_un_b;
          struct { u_short s_w1,s_w2; }            S_un_w;
          u_long                                   S_addr;
  } S_un;
};

而在有的书里面介绍的地址赋值 可以 使用 tcpaddr.sin_addr.S_un.S_addr= htonl(INADDR_ANY); 



到底是怎么回事啊??????


4 个解决方案

#1


在很多书中都在使用sin_addr.s_addr

#2


#define S_un.S_addr s_addr

#3


谢谢 原来在winsock2.h中的确定义了这个宏 

struct in_addr {
        union {
                struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
                struct { u_short s_w1,s_w2; } S_un_w;
                u_long S_addr;
        } S_un;
#define s_addr  S_un.S_addr
                                /* can be used for most tcp & ip code */
#define s_host  S_un.S_un_b.s_b2
                                /* host on imp */
#define s_net   S_un.S_un_b.s_b1
                                /* network */
#define s_imp   S_un.S_un_w.s_w2
                                /* imp */
#define s_impno S_un.S_un_b.s_b4
                                /* imp # */
#define s_lh    S_un.S_un_b.s_b3
                                /* logical host */

#4


up

#1


在很多书中都在使用sin_addr.s_addr

#2


#define S_un.S_addr s_addr

#3


谢谢 原来在winsock2.h中的确定义了这个宏 

struct in_addr {
        union {
                struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
                struct { u_short s_w1,s_w2; } S_un_w;
                u_long S_addr;
        } S_un;
#define s_addr  S_un.S_addr
                                /* can be used for most tcp & ip code */
#define s_host  S_un.S_un_b.s_b2
                                /* host on imp */
#define s_net   S_un.S_un_b.s_b1
                                /* network */
#define s_imp   S_un.S_un_w.s_w2
                                /* imp */
#define s_impno S_un.S_un_b.s_b4
                                /* imp # */
#define s_lh    S_un.S_un_b.s_b3
                                /* logical host */

#4


up