linux網路程式設計概念(一)

2021-08-02 10:54:35 字數 1554 閱讀 1206

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...