linux網路程式設計基礎api
(1)socket位址api
(2)sockt基礎api
sockt的api全部定義在sys/socket.h檔案中,包括 建立socket, 命名socket,監聽socket,接受連線,發起連線,讀寫資料,獲取位址資訊,檢測帶外標記,以及讀取和設定socket選項。
(3)網路資訊api
實現主機名和ip位址之間的轉換,以及伺服器名稱和埠號之間的轉換。這些api全部定義在netdb.h中。
1、socket位址api
1.1 主機位元組序和網路位元組序
#include
1.2 通用socket位址
#include
struct socketaddr
sa_family_t sa_family; //位址族變數。
char sa_data[14]; //用於存放socket的值。
位址族和協議族的關係
協議族以及其位址
總結:sa_data根本根本無法容納多數協議族的位址值。因此linux定義了下面新的socket位址結構體
#include
struct socketaddr_stroge
sa_family_t sa_family;
using long int _ss_align;
char _ss_padding[128 - sizeof(_ss_align)];
1.3專用socket位址
1.3.1 unix本地域協議族
#include
strcut socketaddr_un
sa_family_t sin_family; //位址族 af_unix
char sun_path; //檔案路徑名
1.3.2 tcp/ip協議族
ipv4位址協議族
struct socket_addr_in
sa_family_t sin_family; //位址族af_net
u_int16_t sin_port; //埠號,要用網路位元組序表示
struct in_addr sin_addr; // ipv4位址節結構體
struct in_addr
u_int32_t s_addr; //要用網路位元組序表示
ipv6位址協議族
struct socket_addr_in6
sa_family_t sin6_family; //位址族af_net6
u_int16_t sin_port; //埠號,要用網路位元組序表示
u_int32_t sin6_flowinfo; //留資訊,應設定為0
struct in6_addr sin6_addr; // ipv6位址節結構體
u_int32_t sini6_scope_id;//scope_id 尚處於試驗階段
struct in6_addr
unsigned char sa_addr[16]; //ipv6,要用網路位元組序表示
1.4 ip位址轉換函式
#include
in_addr_t inet_addr(const char * strptr); //將點分十進位制的ipv4位址轉換為網路位元組序表示的ipv4位址
int inet_aton(const char* cp, struct in_addr *inp); //同上,輸出引數inp為轉換後的ipv4位址
char * inet_ntoa(struct in_addr in); //不可重入,該函式內部使用靜態變數儲存結果。將網路位元組序的ipv4位址轉為點分十進位制的字串。
ipv6的轉換函式(同樣適用與ipv4)
#include
int inet_pton(int af, const char *src, void* dst); //af是協議族型別,將點分十進位制的ipv6(ipv4)位址轉換為網路位元組序表示的ipv6(ipv4)位址
const char* inet_ntop(int af, void *src, const char* dst, socklen_t cnt);
Linux高效能伺服器程式設計筆記1
要學習socket位址先要理解主機位元組序和網路位元組序。什麼是主機位元組序和網路位元組序?學習之前了解大小端位元組序 以整數 int i 1 為例 大端位元組序 記憶體的高位址存乙個數的低位位元組 0 7bit 記憶體的低位址存這個數的高位位元組 23 31bit 小端位元組序 記憶體的高位址存乙...
linux高效能伺服器程式設計
linux高效能伺服器程式設計 當當網 亞馬遜 目錄 第一章 tcp ip協議族 第二章 ip協議族 第三章 tcp協議詳解 第四章 tcp ip通訊案例 訪問internet 第五章 linux網路程式設計基礎api 第六章 高階io函式 第七章 linux伺服器程式規範 第八章 高效能伺服器框架...
linux 高效能伺服器程式設計
1.高效能定時器 時間輪,時間堆 處理超時時間,如nginx使用紅黑樹,找出最可能超時的事件 2.高效能伺服器程式框架 nginx 使用的是基於事件模型,epoll,不阻塞,非同步處理 兩種高效的事件處理模式 reactor模式 proactor模式 兩種高效的併發模式 半同步 半非同步模式 領導者...