Windows Socket 網路編程(二) —— 通訊端編程原理

來源:互聯網
上載者:User

http://www.vckbase.com/document/viewdoc/?id=484

一、客戶機/伺服器模式
在TCP/IP網路中兩個進程間的相互作用的主機模式是客戶機/伺服器模式(Client/Server model)。該模式的建立基於以下兩點:1、非對等作用;2、通訊完全是非同步。客戶機/伺服器模式在操作過程中採取的是主動請示方式:
首先伺服器方要先啟動,並根據請示提供相應服務:(過程如下)
1、開啟一通訊通道並告知本地主機,它願意在某一個公認地址上接收客戶請求。
2、等待客戶請求到達該連接埠。
3、接收到重複服務要求,處理該請求並發送應答訊號。
4、返回第二步,等待另一客戶請求
5、關閉伺服器。
客戶方:
1、開啟一通訊通道,並串連到伺服器所在主機的特定連接埠。
2、向伺服器發送服務要求報文,等待並接收應答;繼續提出請求……
3、請求結束後關閉通訊通道並終止。
二、基本通訊端
為了更好說明通訊端編程原理,給出幾個基本的通訊端,在以後的篇幅中會給出更詳細的使用說明。
1、建立通訊端——socket()
功能:使用前建立一個新的通訊端
格式:SOCKET PASCAL FAR socket(int af,int type,int procotol);
參數:af: 通訊發生的地區
type: 要建立的通訊端類型
procotol: 使用的特定協議
2、指定本地地址——bind()
功能:將通訊端地址與所建立的通訊端號聯絡起來。
格式:int PASCAL FAR bind(SOCKET s,const struct sockaddr FAR * name,int namelen);
參數:s: 是由socket()調用返回的並且未作串連的通訊端描述符(通訊端號)。
其它:沒有錯誤,bind()返回0,否則SOCKET_ERROR
地址結構說明:
struct sockaddr_in
{
short sin_family;//AF_INET
u_short sin_port;//16位連接埠號碼,網路位元組順序
struct in_addr sin_addr;//32位IP地址,網路位元組順序
char sin_zero[8];//保留
}
3、建立通訊端串連——connect()和accept()
功能:共同完成串連工作
格式:int PASCAL FAR connect(SOCKET s,const struct sockaddr FAR * name,int namelen);
SOCKET PASCAL FAR accept(SOCKET s,struct sockaddr FAR * name,int FAR * addrlen);
參數:同上
4、監聽串連——listen()
功能:用於連線導向伺服器,表明它願意接收串連。
格式:int PASCAL FAR listen(SOCKET s, int backlog);
5、資料轉送——send()與recv()
功能:資料的發送與接收
格式:int PASCAL FAR send(SOCKET s,const char FAR * buf,int len,int flags);
int PASCAL FAR recv(SOCKET s,const char FAR * buf,int len,int flags);
參數:buf:指向存有傳輸資料的緩衝區的指標。

6、多工——select()
功能:用來檢測一個或多個通訊端狀態。
格式:int PASCAL FAR select(int nfds,fd_set FAR * readfds,fd_set FAR * writefds,
fd_set FAR * exceptfds,const struct timeval FAR * timeout);
參數:readfds:指向要做讀檢測的指標
writefds:指向要做寫檢測的指標
exceptfds:指向要檢測是否出錯的指標
timeout:最大等待時間

7、關閉通訊端——closesocket()
功能:關閉通訊端s
格式:BOOL PASCAL FAR closesocket(SOCKET s);

三、典型過程圖
2.1 連線導向的通訊端的系統調用時序圖

2.2 無連線協定的通訊端調用時序圖

2.3 連線導向的應用程式流程程圖

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.