电竞比分网-中国电竞赛事及体育赛事平台

分享

Delphi Socket 經(jīng)驗總結(jié)

 區(qū)區(qū)收藏 2020-07-18

 在Delphi中,對于Windows中的Socket進行了有效的封裝。在Delphi中,按其繼承關(guān)系,可以分層兩類:
一、TComponent--TAbstractSocket--TCustomSocket--TCustomServerSocket--TServerSocket
    TComponent--TAbstractSocket--TCustomSocket--TClientSocket

Delphi <wbr>Socket <wbr>經(jīng)驗總結(jié)
二、直接從TObject繼承過來:
    TObject--TCustomWinSocket--TServerWinSocket
    TObject--TCustomWinSocket--TClientWinSocket
    TObject--TCustomWinSocket--TServerClientWinSocket

Delphi <wbr>Socket <wbr>經(jīng)驗總結(jié)

  編程思路:通過Socket類TServerSocket&TClientSocket編程,其實都是通過屬性Socket類的屬性-->
                     socket : TCustomWinSocket來接收發(fā)送數(shù)據(jù)。簡單地說:由TCustomSocket類間接操
                     作TCustomWinSocket, 由TCustomWinSocket類對象完成收發(fā)任務(wù)。

Delphi是一種功能強大的面向?qū)ο蟮木幊陶Z言,在網(wǎng)絡(luò)方面,它將windows API封裝成許多組件,大大簡化了編程的復(fù)雜程度。對于一些比較簡單的程序,利用Delphi中的一些網(wǎng)絡(luò)組件,可以輕松地解決問題。

下面將說明TClientSocket組件、TserverSocket組件。

Socket組件的安裝方法5

一.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ā)

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多