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分為兩種型別...