apue 第十六章 套接字

2021-07-04 06:53:08 字數 1297 閱讀 2448

int socket(int domain,int type, int protocal)

返回套接字的檔案描述符

domain是套接字的通訊域,每個域都有不同的位址格式 

af_inet af_inet6 af_unix af_upsec  

af address family 位址族

type是套接字型別 sock_dgram 資料報

sock_stream 位元組流

protocol可以指定為0,表示為給定的域和套接字型別選擇預設協議

int shutdown(int sockfd,int how)

how:shut_rd 關閉讀端,shut_wr 關閉寫端 shut_rdwr

getaddrinfo(const char * restrict host,const char *restrict service,const struct addrinfo *restrict hint,struct addrinfo **restrict res);

提供主機名或者服務名,轉換成位址

host是主機名,service是服務名

res是乙個函式返回的乙個addrinfo鍊錶

hint是過濾位址的模板,用於過濾res中的資訊

bind(int sockfd,const struct sockaddr *addr,socklen_t len);//伺服器端繫結套接字檔案描述符和位址

connect(int sockfd,const struct sockaddr *addr,socklen_t len);//客戶端將sockfd連線至位址addr

如果connect失敗,返回-1,這裡可能導致sockfd的狀態變成未定義,一次可移植的程式在connect失敗後要重新建立套接字

listen(int scokfd,int backlog)//伺服器獲得請求

accept(int sockfd,struct sockaddr *restrict addr,socklen_t *restrict len)//伺服器接收連線請求,並建立連線

sendto(int sockfd,const void *buf,size_t nbytes,int flags,const struct sockaddr *destaddr,socklen_t destlen)

recvfrom(int sockfd,void *restrict buf,size_t len,int flags,struct sockaddr *addr,socklen_t alen);

無連線的傳送與接收

sendto:

destaddr是傳送目標的位址

第十六章 執行緒同步與非同步套接字程式設計

事件物件也屬於核心物件,主要包括三個成員 使用計數 指定是自動重置事件還是人工重置事件的布林值 指定是已通知狀態還是未通知狀態的布林值。createevent函式建立乙個匿名或者命名的事件物件 handle createevent lpsecurity attributes lpeventattri...

第十六章 tcp wrappers

在伺服器向外提供的tcp服務上包裝一層安全檢測機制。外來連線請求首先通過這個安全檢測,獲得安全認證後才可被系統服務接受。hosts.allow hosts.deny 在配置檔案中為各服務分別定義訪問控制規則實現訪問控制,檔案中的規則是即時生效的。配置檔案語法 1 daemon list client...

第十六章 執行緒棧

1 基礎 1 執行緒初始化時,執行緒棧預設1m,所有頁面都是page readwrite屬性,但只為前兩個頁面調撥了物理儲存器,位址低的那個頁面叫防護頁面,為其指定了page guard屬性 2 當執行緒訪問到防護頁面時,由於指定了page guard屬性,系統會得到通知,系統會為防護頁面的下乙個頁...