使用tcp/ip協議的應用程式通常採用應用程式設計介面:
unix bsd
的套接字(
socket
)。socket即是一種特殊的檔案,一些
socket
函式就是對其進行的操作(讀/寫
io、開啟、關閉)。
#include定義與socket有關的巨集和函式
#include定義新型別
#include不同的服務對應不同的埠
#include埠號、協議號、ip位址、主機名轉換函式
#includeip位址、網路順序位址轉換函式
#include定義協議號、埠號等
#include與posix和xopen標準相關的定義
#include定義了wait和waitpid()等函式
#include定義了與訊號有關的內容
#include定義錯誤型別
#include記憶體動態分配函式
#include與執行緒有關的內容
#include與系統時鐘有關的內容
#include定義ip協議相關的巨集、結構等
#include定義icmp協議相關的巨集、結構等
(1)
儲存位址和埠資訊的sockaddr
struct sockaddr
;
(2)inet協議簇位址結構
socketaddr_in
,便於訪問
struct sockaddr_in;
(3)32位
ipv4
位址結構
in_addr
struct in_addr;
位址轉換函式:
htons()--- host to network short
htonl()--- host to network long
ntohs()--- network to host short
ntohl()--- networ to khost long
sin_addr和
sin_port
需要轉換為網路位元組順序,
sin_family
不需轉換,只被核心呼叫,不傳送到網路,可以時本機位元組順序。
struct sockaddr_in adr_inet;//定義變數adr_inet
int adr_len;
memset(&adr_inet,0,sizeof(adr_inet));中將位址結構adr_inet清0
adr_inet.sin_family=af_inet;
adr_inet.sin_port=htons(0);//自動選擇合適的埠號
adr_inet.sin_addr.s_addr=htonl(inaddr_any);//自動填寫所執行機器的ip位址
adr_len=sizeof(adr_inet);
函式:inet_addr()返回的位址已經是按照網路位元組順序,不需要
htonl
原型:unsigned long int inet_addr(char *src)
例:struct sockaddr_in ina;
ina.sin_addr.s_addr=inet_addr(
「162.105.32.1」)
注:1、
inet_addr()
返回的位址已經是按照網路位元組順序,不需要
htonl
inet_addr()發生錯誤時返回
-1,程式設計時需進行錯誤檢查 如:
if((ina.sin_addr.s_addr=inet_addr(「162.105.32.1」))<0)
cout<<」address error!」;
網路位址轉換未點分十進位制格式
函式:inet_ntoa()
原型:char *inet_ntoa(struct in_addr in) 例:
struct sockaddr_in client;
coun<<」you got a connection from \n」
《注:inet_ntoa()de==的引數是
struct in_addr,
而不是unsigned long
網域名稱服務
函式:grthostbyname()
功能:實現網域名稱轉換位網路位址
包含檔案:#include
原型:struct hostent *gethostbyname(char *name)
資料結構:
struct hostent;
#define h_addr h_addr_list[0]//網路位元組順序的ip位址
例:
struct hostent *he;
struct sockaddr_in server;
he=gethostbyname(「www.math.nankai.edu.cn」);
server.sin_addr=*((struct in_addr*)he->h_addr);
網路程式設計學習筆記1 TCP IP
tcp ip協議棧是一系列網路協議的總和,是構成網路通訊的核心骨架,它定義了電子裝置如何連入網際網路,以及資料如何在它們之間進行傳輸。tcp ip協議採用4層結構,分別是應用層 傳輸層 網路層和鏈路層,每一層都呼叫它的下一層所提供的協議來完成自己的需求。tcp ip協議基本框架 當通過http發起乙...
TCP IP 學習筆記 1
一 網路分層 以上為tcp ip協議的四個分層 每層大概功能 鏈路層 又叫資料鏈路層或網路介面層,通常包括裝置驅動和網路介面,處理物理介面資料。包含 arp協議,位址解析協議 rarp協議,逆位址解析協議 網路層 有時候又叫著網際網路層,處理網路中的活動。包括 ip協議 網際協議 主要被tcp ip...
TCP IP程式設計學習筆記(3)
1 使用wasasttartup 函式檢查系統協議棧的安裝情況。只有在協議棧安裝正確的清空下,才可以執行之後的各步驟。常用的呼叫格式 wasasttartup 0x0202,wsadata wasasttartup makeword 2,2 wsadata 2 使用socket 函式建立伺服器端通訊...