網路編程基礎

來源:互聯網
上載者:User

標籤:style   color   使用   strong   檔案   資料   

本文目錄:

一:網路地址結構體的介紹

二:大端序和小端序的簡單介紹以及它們轉換的函數接介面



一:網路地址結構體的介紹

Linux中的網路編程通過Socket(通訊端)介面實現,Socket是一種特殊的檔案描述符。

通訊端socket有三種類型:
? 流式通訊端(SOCK_STREAM):流式的通訊端可以提供可靠的、連線導向的通訊流。它使用了TCP協議。TCP保證了資料轉送的正確性和順序性。

? 資料通訊端(SOCK_DGRAM):資料通訊端定義了一種不需連線的服務,資料通過相互獨立的報文進行傳輸,是無序的,並且不保證可靠,無差錯,它使用資料報協議UDP。

?原始通訊端(SOCK_RAM):原始通訊端允許對低層協議如IP或ICMP直接存取,主要用於新的網路通訊協定的測試等。


網路地址結構體:

struct sockaddr
{
u_short sa_family;    //Sa_family:地址族,採用“AF_xxx”的形式,如:AF_INET。
char sa_data[14];      //Sa_data:14位元組的特定協議地址。
}


struct sockaddr_in
{
short int sin_family; /* Internet地址族*/
unsigned short int sin_port; /* 連接埠號碼*/
struct in_addr sin_addr; /* IP地址*/
unsigned char sin_zero[8]; /* 填0 */
}

struct in_addr
{
unsigned long s_addr;
}
S_addr: 32位的地址。


編程中一般並不直接針對sockaddr資料結構操作,而是使用與sockaddr等價的sockaddr_in資料結構。


二:大端序和小端序的簡單介紹以及它們轉換的函數接介面

IP地址通常由數字加點(192.168.0.1)的形式表示,而在struct in_addr中使用的是IP地址是由32位的整數表示
的,為了轉換我們可以使用下面兩個函數:

         int inet_aton(const char *cp,struct in_addr *inp)
         char *inet_ntoa(struct in_addr in)
函數裡面a 代表ascii n代表network.第一個函數表示將a.b.c.d形式的IP轉換為32位的IP,儲存在inp指標裡面。第二個是將32位IP轉換為a.b.c.d的格式。


網路位元組順序是TCP/IP中規定好的一種資料表示格式,它與具體的CPU類型、作業系統等無關,從而可以保證資料在不同主機之間傳輸時能夠被正確解釋。網路位元組順序採用big endian排序方式。傳輸時能夠被正確解釋。網路位元組順序採用big endian排序方式。


                                                  32bit的整數(0x01234567)從地址0x100開始:

小端位元組序:



大端位元組序:


位元組序轉換
htons把unsigned short類型從主機序轉換到網路序;
vhtonl把unsigned long類型從主機序轉換到網路序;
vntohs把unsigned short類型從網路序轉換到主機序;
vntohl把unsigned long類型從網路序轉換到主機序;


注意:在實驗編碼中,有很多的與地址相關的函數,如htons(),thonl(),inet_addr()等。是我們進行網路編程必須掌握的相關知識,其中htonl用於將本機上的long型資料轉換為網路上的long型資料,htons()轉化為的對象時short型的,inet_addr()可以將字串表示的ip地址轉化為整形的ip地址。









聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.