網路程式設計基礎(一)

2021-08-11 00:23:49 字數 1375 閱讀 5175

網路程式設計基礎

網路程式設計的實現就必須有伺服器和客戶端的存在

伺服器:為客戶提供服務的一方

客戶端:獲取資料的為客戶端,可以是任意一台主機,只要它和伺服器存在連線,並且的到伺服器的授權,就可以使用伺服器提供的服務

有兩種協議可以選擇:

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