Socket之路一

學校開始學習Socket編程,雖然自己搞的是ASP.NET,但是對Socket也有很大的興趣,一直不知道如何入門,剛好藉此機會跟着學習。Socket的概念就不多寫了,Windows環境下的Socket編程是WinSock,現在基本上是2.0,以前還有1.1版,但我想3.0是不會出來了。WinSock繼承了伯克利開發的BSD Unix Socket的規範,所以過程都是一樣的。WinSock編程一般都“異步非阻塞模式”,現在還未學習到這裏,我也不知道如何調用,以後再繼續討論。

關於同步、異步、阻塞、非阻塞。

同步:所有Socket客戶端的請求,在得到Socket服務器端的響應後,才返回,繼續執行下面的指令。

異步:所有Socket客戶端的請求,不用等到Socket服務器端的響應後,就可以返回,繼續執行下面的指令。

阻塞模式:調用如recive()函數時,當緩衝區沒有內容,該線程掛起,無法繼續執行,直到緩衝區有內容爲止。

非阻塞模式:調用如recive()函數時,當緩衝區沒有內容,立即返回,並返回錯誤代碼。

 

這是今天看了一天才入門的C# Socket成果,金旭亮老師的博客給了我很大的幫助。

Socket程序一般是沒有OO的,遵循函數式的編寫方式。

客戶端代碼:

 

服務器端代碼:

 

服務器代碼先執行,客戶端代碼後執行。

 

這個例子中還沒有實現socket異常處理機制,也沒有實現處理多個併發服務的效果(當同時連接兩個客戶端,後連接的就無反應了,因爲服務器處理在Recive()處阻塞,一直等待先連接的客戶端發送消息,後連接的始終在隊列中等待)。

發佈了63 篇原創文章 · 獲贊 5 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章