TCP IP程式設計學習筆記(1)

2021-08-16 08:31:20 字數 2721 閱讀 5027

使用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 函式建立伺服器端通訊...