最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux C中sockaddr和sockaddr_in的區(qū)別

 更新時間:2017年07月05日 10:50:06   投稿:lqh  
這篇文章主要介紹了Linux C中sockaddr和sockaddr_in的區(qū)別的相關(guān)資料,需要的朋友可以參考下

Linux C中sockaddr和sockaddr_in的區(qū)別

struct sockaddr和struct sockaddr_in這兩個結(jié)構(gòu)體用來處理網(wǎng)絡(luò)通信的地址。

在各種系統(tǒng)調(diào)用或者函數(shù)中,只要和網(wǎng)絡(luò)地址打交道,就得用到這兩個結(jié)構(gòu)體。

網(wǎng)絡(luò)中的地址包含3個方面的屬性:

1 地址類型: ipv4還是ipv6
2 ip地址
3 端口

相應(yīng)的,頭文件有如下定義:

include <netinet/in.h> 
 
struct sockaddr { 
  unsigned short  sa_family;  // 2 bytes address family, AF_xxx 
  char       sa_data[14];   // 14 bytes of protocol address 
}; 
 
// IPv4 AF_INET sockets: 
 
struct sockaddr_in { 
  short      sin_family;    // 2 bytes e.g. AF_INET, AF_INET6 
  unsigned short  sin_port;  // 2 bytes e.g. htons(3490) 
  struct in_addr  sin_addr;   // 4 bytes see struct in_addr, below 
  char       sin_zero[8];   // 8 bytes zero this if you want to 
}; 
 
struct in_addr { 
  unsigned long s_addr;     // 4 bytes load with inet_pton() 
}; 

注釋中標(biāo)明了屬性的含義及其字節(jié)大小,這兩個結(jié)構(gòu)體一樣大,都是16個字節(jié),而且都有family屬性,不同的是:

sockaddr用其余14個字節(jié)來表示sa_data,而sockaddr_in把14個字節(jié)拆分成sin_port, sin_addr和sin_zero分別表示端口、ip地址。sin_zero用來填充字節(jié)使sockaddr_in和sockaddr保持一樣大小。

sockaddr和sockaddr_in包含的數(shù)據(jù)都是一樣的,但他們在使用上有區(qū)別:

程序員不應(yīng)操作sockaddr,sockaddr是給操作系統(tǒng)用的

程序員應(yīng)使用sockaddr_in來表示地址,sockaddr_in區(qū)分了地址和端口,使用更方便。 

一般的用法為:

程序員把類型、ip地址、端口填充sockaddr_in結(jié)構(gòu)體,然后強制轉(zhuǎn)換成sockaddr,作為參數(shù)傳遞給系統(tǒng)調(diào)用函數(shù)

網(wǎng)絡(luò)編程中一段典型的代碼為:

int sockfd; 
struct sockaddr_in servaddr; 
 
sockfd = Socket(AF_INET, SOCK_STREAM, 0); 
 
/* 填充struct sockaddr_in */ 
bzero(&servaddr, sizeof(servaddr)); 
servaddr.sin_family = AF_INET; 
servaddr.sin_port = htons(SERV_PORT); 
inet_pton(AF_INET, "127.0.0.1", &servaddr.sin_addr); 
 
/* 強制轉(zhuǎn)換成struct sockaddr */ 
connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)); 
  



感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • Git 創(chuàng)建分支提交遠(yuǎn)程分支詳解

    Git 創(chuàng)建分支提交遠(yuǎn)程分支詳解

    這篇文章主要介紹了Git 創(chuàng)建分支提交遠(yuǎn)程分支詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Shell位置變量&預(yù)定義變量的實現(xiàn)

    Shell位置變量&預(yù)定義變量的實現(xiàn)

    Shell位置變量和預(yù)定義變量是Shell腳本編程中非常重要的概念,本文主要介紹了Shell位置變量&預(yù)定義變量的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • win10下如何運行.sh文件的實現(xiàn)步驟

    win10下如何運行.sh文件的實現(xiàn)步驟

    這篇文章主要介紹了win10下如何運行.sh文件的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 利用shell獲取指定日期前N天的日期

    利用shell獲取指定日期前N天的日期

    最近因為項目的需要對比2015年10月的數(shù)據(jù),因為一年來的數(shù)據(jù)經(jīng)過了很多次調(diào)整和處理,遇到的最直接的問題是很多數(shù)據(jù)需要重新計算。只好寫腳本刷數(shù)據(jù)。在準(zhǔn)備腳本的過程中,就需要根據(jù)給定的日期處理數(shù)據(jù),所以就有了這篇文章,下面有需要的朋友們一起學(xué)習(xí)學(xué)習(xí)。
    2016-11-11
  • 又拍云存儲同步腳本

    又拍云存儲同步腳本

    為了可以自動把網(wǎng)站上的css、js以及圖片等靜態(tài)資源放在又拍云存儲上,訪問速度明顯提高不少,下面簡單介紹下實現(xiàn)步驟,需要的朋友可以參考下
    2013-11-11
  • Shell腳本對比兩個文本文件找出不同行的2個方法分享

    Shell腳本對比兩個文本文件找出不同行的2個方法分享

    這篇文章主要介紹了Shell腳本對比兩個文本文件找出不同行的2個方法分享,本文分別使用comm命令法、grep命令法實現(xiàn),需要的朋友可以參考下
    2014-12-12
  • Obsidian斜杠命令用法詳解

    Obsidian斜杠命令用法詳解

    這篇文章主要介紹了終于定制出順手的Obsidian斜杠命令,利用斜杠命令?+?命令面板置頂?+?Quick?Add插入內(nèi)容?+?Quick?Add別名命令,就可以根據(jù)自己習(xí)慣,實現(xiàn)定制化的斜杠命令,需要的朋友可以參考下
    2022-12-12
  • shell腳本自動檢測網(wǎng)絡(luò)掉線和自動重連

    shell腳本自動檢測網(wǎng)絡(luò)掉線和自動重連

    這篇文章主要介紹了shell腳本自動檢測網(wǎng)絡(luò)掉線和自動重連,這篇文章介紹的是自動檢測連接網(wǎng)絡(luò)的解決方法,需要的朋友可以參考下
    2019-12-12
  • Shell腳本實現(xiàn)復(fù)制文件到多臺服務(wù)器的代碼分享

    Shell腳本實現(xiàn)復(fù)制文件到多臺服務(wù)器的代碼分享

    這篇文章主要介紹了Shell腳本實現(xiàn)復(fù)制文件到多臺服務(wù)器的代碼分享,用在多機(jī)集群環(huán)境中非常方便,需要的朋友可以參考下
    2014-09-09
  • Bash技巧:把變量賦值為換行符(判斷文件是否以換行符結(jié)尾)

    Bash技巧:把變量賦值為換行符(判斷文件是否以換行符結(jié)尾)

    這篇文章主要介紹了Bash技巧:把變量賦值為換行符,判斷文件是否以換行符結(jié)尾,需要的朋友可以參考下
    2020-08-08

最新評論

南康市| 西林县| 阿拉善盟| 焉耆| 湘阴县| 盐亭县| 西乌珠穆沁旗| 库车县| 保山市| 西华县| 左贡县| 斗六市| 嘉义市| 雅江县| 瑞金市| 大余县| 洛隆县| 凤庆县| 辽阳县| 海阳市| 珠海市| 东光县| 平罗县| 荣成市| 罗源县| 堆龙德庆县| 许昌市| 淮安市| 玉环县| 苍南县| 福贡县| 景东| 沐川县| 固安县| 奉节县| 顺平县| 昌邑市| 平塘县| 宜昌市| 双江| 夹江县|