1.位元組序
#include
定義函式 unsigned short int htons(unsigned short int hostshort);
函式說明 htons()用來將引數指定的16位hostshort轉換成網路字元順序。
返回值 返回對應的網路字元順序。
#include
定義函式 unsigned long int htonl(unsigned long int hostlong);
函式說明 htonl()用來將引數指定的32位hostlong轉換成網路字元順序。
返回值 返回對應的網路字元順序。
#include
定義函式 unsigned long int ntohl(unsigned long int netlong);
函式說明 ntohl()用來將引數指定的32位netlong轉換成主機字元順序。
返回值 返回對應的主機字元順序。
#include
定義函式 unsigned short int ntohs(unsigned short int netshort);
函式說明 ntohs()用來將引數指定的16位netshort轉換成主機字元順序。
返回值 返回對應的主機順序。
2.位址格式
#include
struct in_addr
printf("address:%x/n",addr_in);
if(inet_ntop(af_inet,&addr_n,addr_p,sizeof(addr_p))!=1)
printf("address:%s/n",addr_p);
return 0;
}4.獲得主機資訊
一台主機有許多和網路有關的資訊,例如主機名名稱,ip位址等。linux使用如下函式得到這些資訊。
#include
struct hostent* gethostent();
#include
struct hostent
printf("%s/n",host->h_hame);//列印主機名
for(i=0;host->h_aliases[i]!=null;i++)
if(host->h_addrtype==af_inet)//列印位址型別
printf("af_inet/n");
else
printf("unix_inet/n");
printf("%d/n",host->h_length);//列印位址長度
for(i=0;host->h_addr_list[i]!=null;i++)//列印主機ip位址
printf("%s/n",inet_ntop(host->h_addrtype,host->h_addr_list[i],addr_p,net_addr));
return 0;
}5.位址對映
linux環境下提供了乙個函式,根據使用者指定的伺服器網域名稱和服務名稱得到伺服器的ip位址和埠號。並將其填寫到乙個sockaddr_in位址結構中。該函式內部訪問量dns伺服器。
#include
#include
int getaddrinfo(const char * restrict host,const char * restrict service,const struct addrinfo * restrict hint ,struct addrinfo ** restrict res);
該函式的前兩個引數分別表示需要訪問的主機名和服務的名稱(這兩個名稱要都已經在dns伺服器中註冊)。第三個引數表示乙個過濾位址模板,通常情況下不過濾任何ip位址,因此置為null。
第四個引數表示乙個位址資訊結構的列表。該列表列出了所有可用的符合條件的位址結構,使用者可以從中任選乙個作為通訊的位址。
網路程式設計基礎 入門準備
1.位元組序 include 定義函式 unsigned short int htons unsigned short int hostshort 函式說明 htons 用來將引數指定的16位hostshort轉換成網路字元順序。返回值 返回對應的網路字元順序。include 定義函式 unsign...
linux unix網路程式設計 入門基礎
在網路中用來描述計算機中不同程式與其他電腦程式通訊的方式。為了區分不同應用程式的程序和連線,需要使用應用程式與tcp ip協議互動的套接字埠。主要用到三個引數 通訊的目的ip位址 使用的傳輸協議 tcp或udp 和使用的埠號。1.套接字相關的資料型別 套接字程式設計是,通常使用sockaddr和so...
網路程式設計入門
網路程式設計本質上要做的事情就是交流,我們先來分析一下人與人交流,見上圖,我們發現人與人的通訊是分層結構的,這裡以乙個人對另乙個人說 hello world!為例。1 乙個人說了 hello world!後它就是乙個資訊,這個是資訊首先可以直接說出來,我們也可以使用暗號來代替。這就是說資訊可以選擇明...