linux網路程式設計(一)

2021-06-22 06:10:22 字數 1538 閱讀 4843

socket通訊涉及的基本函式有:

(1)建立套接字

sockfd=socket(domain, type, protocol);引數domain指定socket位址簇型別,type為套接字型別,protocol指明socket請求的協議,sockfd為套接字返回的檔案描述符。

例子:socket pascal far socket( int af, int type, int protocol);

af:乙個位址描述。目前僅支援af_inet格式,也就是說arpa internet位址格式。

type:指定socket型別。新

套介面的型別描述型別,如tcp(sock_stream)和udp(sock_dgram)。常用的socket型別有,sock_stream、sock_dgram、sock_raw、sock_packet、sock_seqpacket等等。

protocol:顧名思義,就是指定協議。

套介面所用的協議。如呼叫者不想指定,可用0。常用的協議有,ipproto_tcp、ipproto_udp、ipproto_sctp、ipproto_tipc等,它們分別對應tcp傳輸協議、udp傳輸協議、stcp傳輸協議、tipc傳輸協議。

(2)繫結套接字與本地位址資訊

bind(sockfd,(struct sockaddr*)&

amp;server_addr,sizeof(struct sockaddr));該函式將本地主機位址以及埠號與所建立的套接字繫結起來。

(3)監聽連線

listen(sockfd,backlog);此函式表示伺服器願意接收連線,backlog指佇列中允許的最大排隊請求的個數。

(4)建立連線

connect(sockfd,(struct sockaddr*) &server_addr,sizeof(struct sockaddr));connect用於建立連線,server_addr是儲存著伺服器ip位址和埠號的資料結構struct sockaddr。

(5)接收連線請求

accept(sockfd,(struct sockaddr*) &client_addr,sizeof(struct sockaddr));用於接收客戶機發來的連線請求。

(6)傳送資料

send(sockfd,

msg

len,flags);將len位元組的資料msg傳送出去,flags通常為0。

(7)接收資料

recv(sockfd,

buf,len,flags);從套接字緩衝區buf中讀取len位元組長度的資料。

(8)關閉套接字

close(sockfd);用於關閉套接字連線。

socket通訊過程

套接字程式設計採用客戶機/伺服器(c/s)模式,連線成功後,雙方可以進行通訊。通訊過程如圖1所示。

linux網路程式設計基礎(一)

一 資料儲存順序 大端和小端 高位位元組儲存高位元組稱為小端模式,通常都計算機採用這個模式儲存。而網路則採用大端傳輸。所以需要轉換 面試有時會出這麼個題 寫乙個程式判斷程式的儲存是大端還是小端?程式的原理見下圖 include includeunion wordc int check int mai...

Linux網路程式設計(一)基礎

一 資料儲存順序 大端和小端 大端模式 位址的增長順序與值的增長順序相反 小段模式 位址的增長順序與值的增長順序相同 為什麼會有大小端模式之分呢?這是因為在計算機系統中,我們是以位元組為單位的,每個位址單元都對應著乙個位元組,乙個位元組為8bit。但是在c語言中除了8bit的char之外,還有16b...

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

af表示位址族 address family pf表示協議族 protocol family domain引數 af unix 核心中通訊 sockaddr un af inet 通過ipv4 sockaddr in af inet6 通過ipv6 sockaddr in6 socket分為兩種型別...