摘要:伴隨著互聯網技術的進步和信息技術的發展,網絡應用程序的開發越來越普遍,應用越來越廣泛。文章以基于WinSock的網絡應用程序的開發研究為中心話題,重點介紹了套接字的相關知識、面向連接的套接字編程原理等內容。其中包括套接字的概念、套接字的分類、服務器端程序關鍵代碼的實現、客戶機端程序關鍵代碼的實現等方面。希望能夠引起人們對網絡應用程序開發的進一步重視,對實際工作能夠發揮一定的指導作用。
關鍵詞:網絡應用程序;套接字;編碼;服務器端程序
中圖分類號:TP311.10 文獻標識碼:A 文章編號:1674-7712 (2012) 16-0077-01
一、引言
近年來,計算機技術取得了突飛猛進的發展,與之相伴的網絡應用軟件的開發也越來越多,生產實踐也需要更多的網絡應用軟件,以滿足人們的實際需求。在這樣的背景之下,各種各樣的網絡編程技術相繼出現,并得到了運用和發展。在網絡應用程序開發中,使用套接字的方式,進而實現互聯網上的進程通訊,以達到網絡應用的各種功能,這是目前在網絡應用程序開發中的一種十分重要的方法,也具有廣泛的應用。文章主要介紹基于WinSock的網絡應用程序的開發問題,希望能夠引起人們對這一網絡應用程序開發的重視。
二、套接字的相關知識
套接字的相關知識比較多,在這里不一一介紹,重點介紹它的概念和分類。
(一)套接字的概念
網絡編程,也就是人們所說的編寫基于互聯網的應用程序。首先,這個程序需要形成網絡通訊管道,它是利用TCP/IP協議棧形成的,使得網絡上的通訊得以完成。只有這些事情完成之后,才能開發網絡應用程序。在網絡應用開發的過程中,套接字是使得進程通信得以實現的得力工具。從使用的效果來看,套接字是進程通信斷點的抽象,它能夠提供交換數據機制。從實現上來說,套接字不是別的東西,而是一個軟件機構,在這個機構里面,包含著一定的數據結構。而從使用上來說,套接字就是一個編程的接口,好比插座一般,使得機器的用電變得十分方便。為了能夠比較方便的網絡通訊功能,程序通過綁定套接字的方式進行。在位置上,套接字位于通訊域中,在同一個域中,不同的套接字之間進行數據的交換。事實上,Socket能夠使用的通訊協議棧不僅一種,而是多種多樣的。在網路層,IP尋找路由,實現數據在不同主機之間的交換。而在傳輸層,它是通過端口,從而實現端到端的傳輸服務。
(二)套接字的分類
在套接字的分類上,主要包括兩種:流式套接字和數據報套接字,用戶可以根據實際情況進行選擇。第一、流式套接字具有以下特點:它與電話系統比較相類似,并且能夠提供流傳輸服務,這種服務既是可靠的,同時也是面向連接的。要實現完整的數據傳輸,都有必要經過以下三個程序:建立連接、使用連接、終止連接。從本質上來看,連接是一個管道,數據連接的時候,它是從一端流入,從另外一端流出的過程,只不過是順序不一致而已,但是內容相同,正因為這樣,流式套接字在實踐中的運用越來越廣泛。第二、數據報套接字具有以下幾個特點:它能夠提供數據報傳輸服務,并且這種服務是無連接的,它能夠支持雙向的數據流。數據的傳輸與郵政系統有點類似,它是通過相互獨立的數據報進行傳輸的。數據報套接字在傳輸的過程中,各分組在系統中是獨立的,不過不能保證分組的先后順序,對于出錯的分組也不能進行恢復或者是重新傳輸。
三、面向連接的套接字編程原理
面向連接的套接字編程原理比較復雜,文章主要從以下兩個方面進行介紹,服務器端和客戶機端程序關鍵代碼的實現。
(一)服務器端程序關鍵代碼的實現
在程序啟動的時候,對于面向連接的套接字編程。服務器和客戶機都有必要通過WSAStartup(),這樣才能夠完成對Windows Socket DLL的加載,并且還能夠對套接字的版本進行立即的檢查,當對WSAStartup()的調用成功之后,在這個時候,應用程序才可以調用Windows Socket DLL中的其他函數。當上述步驟完成之后,接下來是定義服務器端的地址和端口號。完成對結構對象各成員的設置。當服務器端套接字調用完listen()函數之后,然后有必要完成accept()函數的調用。在該系統中,進行的是有連接的數據傳輸,所以,如果有數據到達的話,只需要調用recv()函數,從套接字將數據取出來就可以了,既能夠實現通訊和所要達到的目的。
(二)客戶機端程序關鍵代碼的實現
事實上,在編程方面,與服務器端的設計相比而言,面向連接套接字的客戶機端的設計要簡單得多。它的操作比較簡單,只要在流式套接字創建完成之后,調用connect()函數,向在其啟動之前就工作的服務器套接字提出連接請求,然后成功返回,通過這樣的操作就能夠完成與服務器的連接工作。當連接建立之后,就可以實現與服務器數據的傳輸,這個傳輸是通過recv()函數和send()函數實現的。值得注意的是,客戶機在調用connect()函數的時候,有必要通過參數指出相關的信息,比如服務器的IP地址,端口號等等。
四、結束語
通過上述的介紹我們可以得知,在網絡應用程序的開發中,使用Socket能夠收到良好的效果,能夠屏蔽網絡低層復雜的結構和協議。這樣一來,使用Socket開發的軟件適用性比較強,能夠在各種網上運行,從而不必要擔心是什么類型的網絡或者是服務器。并且,該應用軟件可以比較容易的實現異構網的互連,操作也簡單方便。除此之外,使用Socket開發的網絡應用軟件還有一個顯著的特點,那就是程序的結構十分清楚明了,升級和維護也十分方便,在實踐中值得進一步推廣和應用。
參考文獻:
[1]趙志誠,徐玉斌,高慧敏,曾建潮.基于C/S模式的Winsock網絡通信程序的開發[J].計算機工程,2000(4).
[2]李鐳,喻金科,肖永生.基于Delphi下Winsock的應用程序開發與研究[J].南昌航空工業學院學報(自然科學版),2006(3).
[3]樊佩佩,王平崗.基于VB的Winsock控件遠程通信的實現[J].邢臺職業技術學院學報,2011(5).
[4]蔣東興,林鄂華,陳祺德.WindowsSockets網絡程序沒計大全[M].北京:清華大學出版社,1999.
[5]趙曉輝,危建國.基于WinSock的網絡應用程序的開發[J].西南民族大學學報(自然科學版),2007(1).