網路程式設計基礎
網路程式設計的實現就必須有伺服器和客戶端的存在
伺服器:為客戶提供服務的一方
客戶端:獲取資料的為客戶端,可以是任意一台主機,只要它和伺服器存在連線,並且的到伺服器的授權,就可以使用伺服器提供的服務
有兩種協議可以選擇:
(1)tcp:面向連線的 可靠的 流式服務
(2)udp:無連線 不可靠的 資料報服務
tcp 的程式設計流程:
伺服器(server):socket bind listen accept recv/send close
客戶端(client):socket /*bind*/ connect recv/send close
int socket(int domain, int type, int protocol);
domain 引數告訴系統使用哪個底層協議族
type 引數指定服務型別。服務型別主要有 sock_stream 服務(流服務)和 sock_ugram (資料報)服務,對 tcp/ip協議族而言,其值取 sock_stream 表示傳輸層使用 tcp 協議,取 sock_dgram 表示傳輸層使用 udp 協議。
protocol 引數是在前兩個引數構成的協議集合下,再選擇乙個具體的協議,不過這個值通常通常都是唯一的(前兩個引數已經完全決定了它的值)。幾乎在所有的條件下,我們都應該把它設定為 0,表示使用預設協議。
socket 系統呼叫成功時返回乙個 socket 檔案描述符,失敗則返回 -1並設定errno。
int bind(int sockfd, struct sockaddr *addr, int addrlen);
struct sockaddr_in
sa_family_t sin_family; //地質族 af_inet
u_int16_t sin_port; //埠號 網路位元組序(大端模式) pc 機(小端模式)
struct in_addr sin_addr; //ip 位址
struct in_addr
u_int32_t s_addr; //ip 位址最終的表示
int listen(int sockfd, int size);
int accept(int sockfd, struct sockaddr *addr, int *addrlen);
accept 的返回值是獲取到的和客戶端連線的檔案描述符
int connect(int sockfd, struct sockaddr *addr, int addrlen);
netstat -atp 顯示本機上所有的 tcp 服務程式以及其占用的埠號
網路程式設計基礎(一)
1 網路 在計算機領域中,網路是資訊傳輸 接收 共享的虛擬平台,通過它把各個點 面 體的資訊聯絡到一起,從而實現這些資源的共享。2 網際網路 internet 是網路與網路之間所串連成的龐大網路,這些網路以一組通用 的協議相連,形成邏輯上的單一巨大國際網路。在不同主機上的兩個程序 4 在網路乙個程序...
網路程式設計基礎一
osi參考模型也稱為七層模型 應用層 表示層 會話層 傳輸層 網路層 資料鏈路層 物理層 tcp ip參考模型也稱為4層模型 應用層例如 http ftp 傳輸層例如 tcp udp 網際層例如 ip 資料鏈路層 物理層例如 無線 光纜 網線 ip位址 網路中裝置的標識 埠號 用於標識程序的邏輯位址...
網路程式設計基礎 一
獲得套接字識別符號socket fd int socket int domain,int type,int protocol int domain 為傳輸協議 tcp一般用af inet ipv4 internet protocols ipv4網路協議 af inet6 ipv6 internet ...