[Winsock][Concept] About Servers and Clients

  • 2066
  • 0

[Winsock][Concept] About Servers and Clients
Server(伺服器端):較偏向被動型的,等待Client端傳送過來的連線要求,接受連線後。
Client(用戶端):較偏向主動型的,發送連線要求給Server端。當連線要求被接受時,就開始"傳送"跟"接收"訊息。

初學網路,若覺有觀念不清,請多指教囉:

一般關於撰寫Winsock網路應用程式有區分為Server跟Client的觀念:

 

Server(伺服器端):較偏向被動型的,等待Client端傳送過來的連線要求,接受連線後,開始"傳送"資料給Client端,也會接收Client端傳來的訊息。

例如:某知名網站,每天都會收到許多想看網站的用戶端發出的連線需求,他若接受連線,就是可開始讓用戶端接收到他網站的資訊。

Client(用戶端):較偏向主動型的,發送連線要求給Server端。當連線要求被接受時,就開始"傳送"跟"接收"訊息。

例如:我們一般的網路瀏覽的使用者,每次要連接到瀏覽器首頁時,就會對首頁的伺服器端發出連線的需求,若伺服器端接受,此時我們才可以看到瀏覽器首頁的內容。

 

在撰寫網路程式設計時,可msdn提供Server跟Client兩種應用程式撰寫的簡易流程,如下圖。

image

兩者流程上大致相同:

1. 首先是將WinSock的標頭檔、函式庫都引用到程式內。

image

2. 一開始使用WSAStartup方法來init WinSock的函式庫。Init完成後,才可以開始使用WinSock的相關函式或屬性,否則可能會產生編譯錯誤。

3. 去建立一個SOCKET物件。

- 偏Client的socket物件會嘗試主動要求連線,所以會需要擁有Server端的連線IP以及連接Port。

- 偏Server的socket物件會建立之後,等待著做循環的動作,直到有人要求連線才會繼續做接下來的動作喔。

4. 其他步驟大致同上圖所列。只是剛開始寫真的需要多多參考MSDN的Function內容囉!

5. 最後千千萬萬要記得,做個乾淨的收場。使用closesocket、WSACleanup,做關閉SOCKET跟停用WinSock的動作喔。

 

參考:

http://msdn.microsoft.com/en-us/library/ms737520(v=VS.85).aspx

http://msdn.microsoft.com/en-us/library/ms741394(v=VS.85).aspx

http://tangentsoft.net/wskfaq/

 

沒試過,別說你不行!該努力就去努力,別過了再說後悔。

〈請多指教,新手上路〉