afunms

          My Software,My Dream—Forge a more perfect NMS product.

          sockaddr與sockaddr_in結構體聯(lián)系

          struct sockaddr {
          unsigned  short  sa_family;     /* address family, AF_xxx */
          char  sa_data[14];                 /* 14 bytes of protocol address */
          };
          sa_family是地址家族,一般都是“AF_xxx”的形式。好像通常大多用的是都是AF_INET。
          sa_data是14字節(jié)協(xié)議地址。
          此數據結構用做bind、connect、recvfrom、sendto等函數的參數,指明地址信息。

          但一般編程中并不直接針對此數據結構操作,而是使用另一個與sockaddr等價的數據結構
          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;
          };

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

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

          posted on 2008-03-13 16:12 afunms 閱讀(259) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網站導航:
           

          My Links

          News

          留言簿(18)

          隨筆檔案

          相冊

          搜索

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 马边| 河池市| 新和县| 阿勒泰市| 黔西| 阳谷县| 绥芬河市| 图们市| 额敏县| 玉门市| 增城市| 晋州市| 仁化县| 乐昌市| 越西县| 大同县| 偏关县| 抚顺市| 务川| 东乌珠穆沁旗| 鄂尔多斯市| 张家口市| 东光县| 清苑县| 青河县| 德钦县| 奉化市| 乌苏市| 通河县| 福海县| 五常市| 平果县| 九台市| 叙永县| 观塘区| 邯郸市| 广宁县| 大竹县| 台北市| 乌鲁木齐市| 林甸县|