afunms

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

          sockaddr與sockaddr_in結構體聯系

          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字節協議地址。
          此數據結構用做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指代協議族,在socket編程中只能是AF_INET
          sin_port存儲端口號(使用網絡字節順序)
          sin_addr存儲IP地址,使用in_addr這個數據結構
          sin_zero是為了讓sockaddr與sockaddr_in兩個數據結構保持大小相同而保留的空字節。
          s_addr按照網絡字節順序存儲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 閱讀(260) 評論(0)  編輯  收藏


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


          網站導航:
           

          My Links

          News

          留言簿(18)

          隨筆檔案

          相冊

          搜索

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 平塘县| 桃园县| 莲花县| 大英县| 陈巴尔虎旗| 元江| 池州市| 南部县| 汽车| 新蔡县| 元氏县| 扶沟县| 大姚县| 南郑县| 泾源县| 焉耆| 名山县| 澜沧| 榆中县| 恩平市| 武隆县| 梅河口市| 逊克县| 澜沧| 仙游县| 习水县| 牙克石市| 扎赉特旗| 丰原市| 嘉鱼县| 安龙县| 甘南县| 隆回县| 玉树县| 大宁县| 横峰县| 新干县| 镇原县| 体育| 万荣县| 苏州市|