|
在Delphi中,對于Windows中的Socket進行了有效的封裝。在Delphi中,按其繼承關(guān)系,可以分層兩類:
編程思路:通過Socket類TServerSocket&TClientSocket編程,其實都是通過屬性Socket類的屬性-->Delphi是一種功能強大的面向?qū)ο蟮木幊陶Z言,在網(wǎng)絡(luò)方面,它將windows API封裝成許多組件,大大簡化了編程的復(fù)雜程度。對于一些比較簡單的程序,利用Delphi中的一些網(wǎng)絡(luò)組件,可以輕松地解決問題。 下面將說明TClientSocket組件、TserverSocket組件。 一.TClientSocket組件TClientSocket組件主要作為客戶端的套接字使用。它封裝了客戶端的套接字,在與服務(wù)器建立連接后,就負責(zé)管理這個鏈接,在結(jié)束連接之后關(guān)閉套接字。下面將簡單地介紹TClientSocket組件的主要屬性、方法和事件。 1.屬性 ●Active:設(shè)置ClientSocket是否打開。 ●ClientType:設(shè)置ClientSocket使用阻塞式還是非阻塞式。 ●Address:想要連接的服務(wù)器的ip地址。 ●Host:想要連接的服務(wù)器的主機名。 ●Port:想要連接服務(wù)器的端口號。 ●Service:想要獲得的服務(wù)。 ●Socket:TClientWinSocket連接所使用的Socket,它負責(zé)數(shù)據(jù)的傳輸。 上面是TclientSocket組件的主要屬性。在實際使用中,主要是設(shè)TclientSocket組件的Address屬性(或Host屬性)和Port屬性。只要知道服務(wù)器的ip地址、端口號,將組件的Active屬性設(shè)置為True,就可以建立和服務(wù)器Socket的連接了。屬性ClientType是對應(yīng)套接字在試圖獲得數(shù)據(jù)沒有到來時,就會占用進程,而不去處理其他的事,直到數(shù)據(jù)到來為止。非阻塞則正好相反,在套接字等待數(shù)據(jù)而數(shù)據(jù)還未到來時,套接字不會等待,而是直接返回,等待數(shù)據(jù)到來時才去接收數(shù)據(jù),在一般情況下,用非阻塞比較多。 2.方法 ●Create:創(chuàng)建一個TClientSocket對象。 ●Destroy:釋放一個TClientSocket對象。 ●Open:初始化Socket連接,等同于將Active屬性設(shè)置為True。 ●Close:關(guān)閉Socket連接,等同于將Active屬性設(shè)置為False。 3.事件 ●OnConnect:當(dāng)客戶與服務(wù)器建立連接后該事件被觸發(fā)。 ●OnConnecting:在找到服務(wù)器時,當(dāng)尚未建立連接時,該事件被觸發(fā)。 ●OnDisConnect:在改變連接前,該事件被觸發(fā)。 ●OnError:在創(chuàng)建、使用或者關(guān)閉套接字出現(xiàn)錯誤時,該事件被觸發(fā)。 ●OnLookup:在試圖尋找服務(wù)器端套接字時,該事件被觸發(fā)。 ●OnRead:在客戶端有數(shù)據(jù)到來并可以讀取時,該事件被觸發(fā)。 ●OnWrite:在客戶端有數(shù)據(jù)需要發(fā)送時,該事件被觸發(fā)。 二.TServerSocket組件TserverSocket組件主要作為服務(wù)器端的套接字管理器使用。它封裝了服務(wù)器端的套接字。在打開套接字后,服務(wù)器端就處于監(jiān)聽狀態(tài),在接收到其他計算機的連接請求之后,與客戶端建立連接,創(chuàng)建一個新的套接字,用于和客戶端互相傳數(shù)據(jù),此時TServerSocket組件則繼續(xù)監(jiān)聽客戶端的連接。 下面將簡單地介紹一下TServerSocket組件的主要屬性、方法和事件。 1.屬性 ●Active:設(shè)定TserverSocket是否處于打開,并處于監(jiān)聽狀態(tài)。 ●SeverType:設(shè)定TServerSocket按阻塞式還是非阻塞式模式工作方式。 ●Port:服務(wù)器端口。 ●Service:服務(wù)器端提供的服務(wù)。 ●Socket:連接所使用的Socket。 ●TreadCacheSize:允許客戶連接的最大數(shù)值。 2.方法 ●Create:創(chuàng)建一個TServerSocket 對象。 ●Destroy:釋放一個TServerSocket對象。 ●Open:打開 TServerSocket 并開始監(jiān)聽,等同于將Active屬性設(shè)為True。 ●Close:關(guān)閉 TServerSocket ,斷開與客戶端連接,等同于將Active屬性設(shè)置為False。 3.事件 ●OnAccept:當(dāng)有客戶端請求連接時,該事件被觸發(fā)。 ●OnClientConnect:當(dāng)有客戶端的連接請求被接受并且客戶端的連接建立時,該事件被觸發(fā)。 ●OnClientDisConnect:當(dāng)有客戶端的套接字被關(guān)閉時,該事件被觸發(fā)。 ●OnClientError:當(dāng)與一個獨立的客戶端建立、使用、斷開出現(xiàn)錯誤時,該事件被觸發(fā)。 ●OnClientRead:當(dāng)服務(wù)器應(yīng)該從某一個與客戶端連接的套接字讀取數(shù)據(jù)時,該事件被觸發(fā)。 ●OnClientWrite:當(dāng)服務(wù)器應(yīng)該給某一個與客戶端連接的套接字發(fā)送數(shù)據(jù)時,該事件被觸發(fā)。 ●OnGetSocket:當(dāng)服務(wù)器端應(yīng)該創(chuàng)建一個TServerSocket 對象已用于和一個客戶端的連接時,該事件被觸發(fā)。 ●OnGetThread:當(dāng)服務(wù)器應(yīng)該創(chuàng)建一個新線程以用于和一個客戶端的連接時,該事件被觸發(fā)。 ●OnListen:當(dāng)服務(wù)器進入監(jiān)聽狀態(tài)時,該事件被觸發(fā)。 ●OnThreadEnd:當(dāng)與一個客戶端的套接字連接終結(jié),并且相對應(yīng)的通信線程也將結(jié)束,該事件被觸發(fā)。 ●OnThreadStart:當(dāng)與一個客戶端的套接字連接建立完畢,并且相對應(yīng)的通信線程也將開始,該事件被觸發(fā) |
|
|
來自: 區(qū)區(qū)收藏 > 《待分類》