sockaddr結構體


sockaddr

本詞條缺少 名片圖,補充相關內容使詞條更完整,還能快速升級,趕緊來 編輯吧!
一,用於存儲參與(IP)Windows套接字通信的計算機上的一個internet協議(IP)地址。為了統一地址結構的表示方法 ,統一接口函數,使得不同的地址結構可以被bind()、connect()、recvfrom()、sendto()等函數調用。但一般的編程中並不直接對此數據結構進行操作,而使用另一個與之等價的數據結構sockaddr_in。這是由於Microsoft TCP/IP 套接字開發人員的工具箱僅支持internet地址字段,而實際填充字段的每一部分則遵循sockaddr_in數據結構,兩者大小都是16字節,所以二者之間可以進行切換。
外文名
sockaddr
性    質
通用地址結構
定    義
struct sockaddr {
說    明
sa_data : 是14字節的協議地址

目錄

1sockaddr

2sockaddr_in

 
 
1 sockaddr
其定義如下:
struct sockaddr {
  unsigned short sa_family; /* address family, AF_xxx */
  char sa_data[14]; /* 14 bytes of protocol address */
  };
說明:
sa_family :是2字節的地址家族,一般都是“AF_xxx”的形式。通常用的都是AF_INET。
2 sockaddr_in
其定義如下:[1] 
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 */
  };
  sin_family:指代協議族,在socket編程中只能是AF_INET
  sin_port:存儲端口號(使用網絡字節順序)
  sin_addr:存儲IP地址,使用in_addr這個數據結構
  sin_zero:是為了讓sockaddr與sockaddr_in兩個數據結構保持大小相同而保留的空字節。
而其中in_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;
闡述下in_addr的含義,很顯然它是一個存儲ip地址的 共用體有三種表達方式:
第一種用四個字節來表示IP地址的四個數字;
第二種用兩個雙字節來表示IP地址;
第三種用一個長整型來表示IP地址。
給in_addr賦值的一種最簡單方法是使用inet_addr函數,它可以把一個代表IP地址的字符串賦值轉換為in_addr類型,如addrto.sin_addr.s_addr=inet_addr("192.168.0.2");
其反函數是inet_ntoa,可以把一個in_addr類型轉換為一個字符串。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM