sockaddr_in server;
server.sin_family = AF_INET;
server.sin_port = htons(8000);
server.sin_addr.s_addr = inet_addr("127.0.0.1");  //这一句不明白
connect(m_Socket, (sockaddr *)&server,  sizeof(sockaddr_in));

server.sin_addr.s_addr 就没有s_addr这个对象,应该按下面这样写啊:
server.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");这个应该才
对啊,为什么erver.sin_addr.s_addr是对的呢?C++里不是大小写敏感吗?
再就了就算不敏感的话s_addr也是S_un结构里的啊?不应该直接调用吧!
求解释!!!求真相!

解决方案 »

  1.   

    sockaddr_in(在netinet/in.h中定义):
    struct sockaddr_in {
    short int sin_family;                      /* Address family */
    unsigned short int sin_port;       /* Port number */
    struct in_addr sin_addr;              /* Internet address */
    unsigned char sin_zero[8];         /* Same size as struct sockaddr */
    };struct in_addr {
    unsigned long s_addr;//就是这句,你可能没看到这个结构定义
    };
      

  2.   

    在WINSOCK.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
      

  3.   

    。。没什么区别的 
    sockaddr_in这个结构怎么算 它都是那么大
    只要把前面的 两个成员添加好了
    后面随便你用什么方式填充都行
    memset
    memcpy都OK