在程序設計中涉及數據存儲和數據交換的時候不管是B/S還是C/S模式 都有這樣一個概念這要求一台性能和配置都比較好的主機作為服務器以滿足數目眾多的客戶端進行頻繁訪問但是對於一些數據交換的要求不主同而且涉及到的通訊個體數目不多如果還采用一主機多客戶機的模式便要求一台配置良好而且上安裝了相關數據服務軟件這樣會造成硬件和軟件上的很多不必要的成本這時Socket在點對點的平行對象之間的通訊的優勢就就發揮出來了
其實對於Socket通訊來說服務器和客戶端的界定不像數據庫服務器與客戶端那樣明顯甚至可以說Socket通訊裡面的服務器和客戶端只是相對的因為網絡通訊的對象基本上是處於平等層面的只是為了方便對兩台聯網通訊的主機的描述才這樣定義稱謂的
由於在中Socket通訊的建立很容易所以本文主要介紹一個Socket的比較典型的應用的流程客戶端向服務器發送圖片請求圖片服務器接收到請求並將服務器上的圖片編碼發送到客戶端客戶端得到圖片數據後再將這些數據寫成圖片文件保存在客戶端上
本文主要是對Socket的一個應用進行介紹所以至於其原理在此沒有深究至於如何建立Socket還有如何實現網絡的七層協議在此都沒有進行相關研究和介紹本文主要介紹如何實現一個用戶想要的功能即在兩台主機之間進行通訊通過網絡來收發用戶想要收發的數據
一通訊流程圖
[nextpage]
三測試socket的連接方法telnet遠程登錄
用戶可以同時對客戶端和端的Socket程序進行編寫然後進行聯調也可以一次只編寫一個然後通過下面的方法來測試Socket連接
一般通過遠程登錄來測試連接是否成功比如測試本機的端口是否能連接成功
運行->cmd->telnet
在沒有運行對本機的端口進行不斷偵聽的程序時會出現連接失敗的提示
如果連接成功則會彈出另外一個窗口
如果在偵聽線程裡面設置斷點通常連接成功後就會在
Socket sRecmdTemp = sRecvCmdAccept();
之後的語句上斷點
附近演示程序的說明
使用VS創建
主要實現的功能是主機A向主機B發圖片請求主機B將D盤image目錄下的imagejpgimagejpg文件編碼發送到主機B主機B再解碼並寫成圖片文件到E盤的image目錄下
為了方便調試演示程序將服務器和客戶端同時放在本機上即localhost或者即本程序最終實現的效果就是將本機的D 盤image目錄下的兩個指定名稱的圖片傳送到E盤image目錄下所以在運行本程序前先在D:/image目錄下放置兩張命名為 imagejpgimagejpg的圖片文件
先運行服務器程序再運行客戶端程序
From:http://tw.wingwit.com/Article/program/net/201311/11802.html