網路程式設計就是編寫程式使得兩台聯網的計算機進行資料的交換。套接字是網路傳輸時使用的軟體裝置,因此我們可以通過套接字來實現資料傳輸。
由於網路程式設計中涉及到了兩台聯網計算機,所以我們將其分為伺服器端和客戶端,顧名思義,伺服器端是用來受理連線請求,客戶端是用來請求連線。
注意: 現在介紹的函式都是在linux環境下使用的,在linux環境中,套接字和檔案是一樣的,或者說,套接字就是一種特殊的檔案而已。
#include
int socket
(int domain,int type,int protocol)
;
引數解釋如下:
(1)domain:套接字中使用的協議域/協議族(family)資訊。目前主要使用的協議族是:pf_inet(ipv4網際網路協議族)
(2)type:套接字資料傳送的型別。一般來說,比較有代表性的套接字是面向連線的套接字和面向訊息的套接字。
①面向連線的套接字(sock_stream):可靠的,按序傳遞的,基於位元組的面向連線的資料傳輸方式的套接字。
②面向訊息的套接字(sock_dgram):不可靠的,不按序的,以資料的告訴傳送為目的的套接字(無連線的)。
(3)protocol:計算機之間通訊的協議資訊該引數決定最終使用哪種協議。常用的協議有:ipproto_tcp(tcp套接字,面向連線的);ipproto_udp(udp套接字)。
#include
int bind
(int sockfd,struct sockaddr *myaddr,socklen_t addrlen)
;
引數解釋如下:
(1)sockfd:要分配的ip位址和埠號的套接字的檔案描述符。
ip位址包括:ipv4(4位元組)和ipv6(16位元組),現在主要使用ipv4(ipv6是ipv4的擴充套件和備用),其ip位址分為網路id和主機id,且為了供不同規模的網路使用,分為abcde五種ip位址型別。我們可以參考下圖(圖為借鑑的):
b類位址的首位元組範圍:128-191(以10開頭)
c類位址的首位元組範圍:192-233(以110開頭)
#include
int listen
(int sockfd,int backlog)
;
引數解釋如下:
(1)sockfd:要監聽的socket檔案描述符
(2)backlog:建立的socket可以排隊的最大連線個數。
#include
int accept
(int sockfd,struct sockaddr *addr,socklen_t *addrlen)
;
#include
int connect
(int sockfd,struct sockaddr *serv_addr,socklen_t addrlen)
;
引數解釋如下:
(1)sockfd:客戶端的socket檔案描述符描述字
(2)serv_addr:伺服器的socket位址
(3)addrlen:socket位址的長度。
網路程式設計 Socket 套接字
網路程式設計 目前較為流行的網路程式設計模型是客戶機 伺服器 c s 結構。即通訊雙方一方作為服務 器等待客戶提出請求並予以響應。客戶則在需要服務時向伺服器提出申請。伺服器一般作為 守護程序始終執行,監聽網路埠,一旦有客戶請求,就會啟動乙個服務程序來響應該客 戶,同時自己繼續監聽服務埠,使後來的客戶...
網路程式設計socket套接字
socket 建立乙個socket,主動套介面。bind 繫結ip和埠號到socket,需先配置ip 埠號。connect 客戶機 client 端和伺服器傳送請求建立連線。listen 伺服器 serv 監聽client傳送的請求。accept 完成連線,阻塞響應。sendto 傳送資料 recv...
網路程式設計 Socket套接字
網路程式設計 目前較為流行的網路程式設計模型是客戶機 伺服器結構。即通訊雙方一方作為伺服器等待客戶提出請求並予以響應,客戶則在需要服務時提出申請。伺服器一般作為守護程序始終執行,監聽網路埠,一旦由客戶請求,就會啟動乙個服務程序來響應該客戶,同時自己監聽服務埠,使後來的客戶也能及時的得到服務。在int...