[Winsock][Concept] About Servers and Clients
Server(伺服器端):較偏向被動型的,等待Client端傳送過來的連線要求,接受連線後。
Client(用戶端):較偏向主動型的,發送連線要求給Server端。當連線要求被接受時,就開始"傳送"跟"接收"訊息。
初學網路,若覺有觀念不清,請多指教囉:
一般關於撰寫Winsock網路應用程式有區分為Server跟Client的觀念:
Server(伺服器端):較偏向被動型的,等待Client端傳送過來的連線要求,接受連線後,開始"傳送"資料給Client端,也會接收Client端傳來的訊息。
例如:某知名網站,每天都會收到許多想看網站的用戶端發出的連線需求,他若接受連線,就是可開始讓用戶端接收到他網站的資訊。
Client(用戶端):較偏向主動型的,發送連線要求給Server端。當連線要求被接受時,就開始"傳送"跟"接收"訊息。
例如:我們一般的網路瀏覽的使用者,每次要連接到瀏覽器首頁時,就會對首頁的伺服器端發出連線的需求,若伺服器端接受,此時我們才可以看到瀏覽器首頁的內容。
在撰寫網路程式設計時,可msdn提供Server跟Client兩種應用程式撰寫的簡易流程,如下圖。
兩者流程上大致相同:
1. 首先是將WinSock的標頭檔、函式庫都引用到程式內。
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/
沒試過,別說你不行!該努力就去努力,別過了再說後悔。
〈請多指教,新手上路〉