溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

sockaddr_in結(jié)構(gòu)體簡介

發(fā)布時間:2020-08-24 17:25:05 來源:網(wǎng)絡(luò) 閱讀:333 作者:li19910110 欄目:編程語言
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;
};
typedef struct in_addr {
union {
            struct{
                        unsigned char s_b1,
                        s_b2,
                        s_b3,
                        s_b4;
                        } S_un_b;
           struct {
                        unsigned short s_w1,
                        s_w2;
                        } S_un_w;
            unsigned long S_addr;
          } S_un;
} IN_ADDR;

sin_family指代協(xié)議族,在socket編程中只能是AF_INET
sin_port存儲端口號(使用網(wǎng)絡(luò)字節(jié)順序)
sin_addr存儲IP地址,使用in_addr這個數(shù)據(jù)結(jié)構(gòu)
sin_zero是為了讓sockaddr與sockaddr_in兩個數(shù)據(jù)結(jié)構(gòu)保持大小相同而保留的空字節(jié)。
s_addr按照網(wǎng)絡(luò)字節(jié)順序存儲IP地址

sockaddr_in和sockaddr是并列的結(jié)構(gòu),指向sockaddr_in的結(jié)構(gòu)體的指針也可以指向
sockadd的結(jié)構(gòu)體,并代替它。也就是說,你可以使用sockaddr_in建立你所需要的信息,
在最后用進行類型轉(zhuǎn)換就可以了bzero((char*)&mysock,sizeof(mysock));//初始化
mysock結(jié)構(gòu)體名
mysock.sa_family=AF_INET;
mysock.sin_addr.s_addr=inet_addr("192.168.0.1");
……
等到要做轉(zhuǎn)換的時候用:
(struct sockaddr*)mysock


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI