af表示位址族(address family)
pf表示協議族(protocol family)
domain引數
af_unix 核心中通訊 sockaddr_un
af_inet 通過ipv4 sockaddr_in
af_inet6 通過ipv6 sockaddr_in6
socket分為兩種型別,一種是流(tcp),一種是資料報(udp)
其中流是面向鏈結的可靠的但是不支援保留訊息邊界,資料報不是面向鏈結也不可看的但是可以保留訊息邊界。
#include
//建立乙個socket
//type引數指定socket型別(sock_stream或者sock_dgram),protocol引數指定為0即可,也可指定為非零值
int socket(int domain,int type,int protocol); //成功返回檔案描述符,失敗返回-1
//將socket繫結到位址
//sockfd就是socket的返回值,addr引數是乙個指標,指向乙個指定該socket繫結到的位址的結構,addrlen引數指定了位址結構的大小
int bind(int sockfd,const
struct sockaddr *addr,socklen_t addrlen);//成功返回0,失敗-1
//struct sockaddr結構的定義
sa_family_t sa_family;
char saz_data[14];
//監聽接入鏈結(被動)
//backlog引數允許相知未決連線(客戶端在伺服器呼叫accept()之前呼叫connect())的數量,在這個限制之內的連線請求會立即成功
int listen(int sockfd,int backlog); //成功返回0,失敗-1
//接受連線
//該函式建立乙個新socket,該新socket會與執行sonnect()的對等socket進行連線
int accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen);` //成功返回檔案描述符,失敗返回-1
//連線到對等socket
int connect(int sockfd,const
struct sockaddr *addr,socklen_t addrlen);//成功返回0,失敗-1
//連線終止
close();
ssize_t recvfrom(int sockfd,void *buffer,size_t length,int flags,struct sockaddr *src_addr,socklen_t *addrlen); //成功返**到的位元組數,失敗-1
ssize_t sendto(int sockfd,const
void *buffer,size_t length,int flags,const
struct sockaddr *dest_addr,socklen_t addrlen); //成功返回傳送的位元組數,失敗-1
Linux網路程式設計 基本概念
網路層 功能應用層 具體功能 表示層會話層 幫助使用者程式建立連線過程 取消連線 的過程 傳輸層傳輸層用來傳輸資料,保證資料能夠有序進行,如果資料不正常,可能進行資料的重發,傳輸資料是以位元組為單位進行傳輸 網路層ip位址管理和路由 最短路徑 網路通訊正常的線路 資料鏈路層 網絡卡驅動的程式,用來 ...
網路程式設計概念
一.網路 將不同區域的計算機連線到一起.區域網 都會網路 網際網路 與網域名稱的關係 ip位址是數字,網域名稱是字母。乙個ip位址可以對應多個網域名稱,乙個網域名稱只可以對應乙個ip位址 三.埠號 用來區分計算機軟體 相當於房子的房門 1.佔兩個自己,所以長度0 65536 2.在同乙個協議下,埠號...
linux網路程式設計(一)
socket通訊涉及的基本函式有 1 建立套接字 sockfd socket domain,type,protocol 引數domain指定socket位址簇型別,type為套接字型別,protocol指明socket請求的協議,sockfd為套接字返回的檔案描述符。例子 socket pascal...