国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

TServerSocket和TClientSocket的使用

2019-11-17 05:39:25
字體:
來源:轉載
供稿:網友

  在網絡編程中,WinSocket API編程是最基本,也是最麻煩的地方(說句不怕影響形象的話,我對此就是一知半解)。但是,假如你是使用C++Builder作為編程平臺,你就偷著樂吧,有了BCB,菜鳥變高手!:-)

在BCB中,TServerSocket和TClientSocket涵蓋了基本的WinSocket編程,其中TServerSocket作為服務器方使用,TClientSocket作為客戶端使用,這兩個組件本身并不提供Socket連接,但是他們都有一個Socket屬性,這個屬性才提供了Socket連接。下面就先向大家介紹一下這兩個組件常用的方法屬性,然后在通過一個例子來看看這兩個組件的使用。
1)TServerSocket
名稱          類型             說明
Socket     TServerWinSocket 最重要的屬性,提供Socket連接,事實上發(fā)送/接收數據都要靠這個屬性.
Port       int              要監(jiān)聽的端口,假如在Service屬性中指定了服務類型,此屬性將被忽略.
Service    AnsiString       提供的服務,如HTTP、FTP等,假如在這里指定了服務類型,
                            Port將被忽略,因為各種服務都有特定的端口,如FTP:21、HTTP:80
ServerType TServerType      設置與客戶連接的方式,取值為兩個枚舉常量stNonBlocking和
                            stThreadBlocking,stNonBlocking表示用非阻塞方式連接每一個客戶
                            每個連接都在一個單獨的線程中處理。并用OnClientRead()和
                            OnClientWrite()通知服務器端的Socker進行讀寫。stThreadBlocking
                            表示以阻塞方式連接客戶,即以主動查詢的方式可客戶連接。
Active     bool             激活服務,相當于調用Open()方法。

OnAccept事件當有客戶請求連接時觸發(fā)
OnClientRead事件通知服務器去讀取有關信息。OnClientWrite與此類似。

2)TClientSocket
名稱        類型               說明
Socket      TClientWinSocket  同TServerSocket
Active      bool              同TServerSocket

Address     AnsiString        服務器的ip地址,如202.98.35.14
ClientType  TClientType       與服務器連接方式,取值為兩個枚舉常量ctNonBlocking,tBlocking。
                              ctNonBlocking表示非阻塞方式,ctBlocking表示阻塞方式,詳見上例。
Host        AnsiString        要連接的主機名,如www.cpcw.com
Port        int               同TServerSocket
Service     AnsiString        同TServerSocket

OnConnect事件當連接時發(fā)生,OnConnecting、OnDisConnect與此類似
OnRead事件通知客戶機去讀取有關信息。OnWrite與此類似。

TServerSocket和TClientSocket只提供基本的服務器/客戶機的連接,真正提供數據傳輸的是它們都有的屬性Socket,它的類型分別是TServerWinSocket和TClientWinSocket,而TServerWinSocket和TClientWinSocket的父類都是TCustomWinSocket,下面我們就來看看TServerWinSocket和TClientWinSocket常用的屬性和方法。

共同的屬性方法(來源于TCustomWinSocket)
名稱          類型          說明
Connected      bool         檢查是否連接成功
LocalAddress   AnsiString   本地IP地址,與此類似LocalHost:本機域名,LocalPort:本機端口
RemoteAddress  AnsiString   另一端的IP地址,與此類似RemoteHost:另一端域名,
                            RemotePort:另一端端口
SocketHandle   int          只讀,返回Socket對象的Windows句柄,調用WinSocket API函數會用到它。
Handle         HWND         Socket能夠接受到的異步事件都是以Windows消息的形式發(fā)送給此句柄的。

Close()方法作為服務器,關閉所有連接;作為客戶機,關閉自己與服務器的連接
SendText(AnsiString)方法發(fā)送一個字符串,
SendBuf(void* buff,int count)發(fā)送緩沖區(qū)buff中的count個字節(jié),返回實際發(fā)送的字節(jié)數
SendStream(TStream* AStream)發(fā)送一個流到Socket中。
ReceiveText()從Socket中讀取并返回一個字符串。
ReceiveLength()從Socket讀取數據需多少字節(jié)的緩沖區(qū)。
ReceiveBuf(void* buff,int count)從Socket中讀取count字節(jié)的數據到buff。

TClientWinSocket
TClientWinSocket只增加了一個ClientType屬性,
用于決定與服務器的連接類型(參見TClientSocket->ClientType)。

TServerWinSocket


名稱              類型說明
ServerType       服務類型,參見TServerSocket->ServerType。
ActiveConnection  int只讀,返回當前活動的連接數。
Connection        TCustomWinSocket數組,索引n表示第n+1個連接,如Connection[0]表示第一個連接。

有了這些知識,我們就可以完成一些基本的WinSocket編程了,下面就結合一個簡單的閑聊程序來看看具體的應用。
首先在窗體上放置以下VCL組件,并修改相應屬性:
類型              Name          屬性        Caption/Text        說明
TCheckBox      ckListen    監(jiān)聽當選取時,本程序作為服務器
TCheckBox      ckConnect   連接當選取時,本程序作為客戶機
TEdit          edName      無名氏閑聊時所用的名字。
TBitBTn        bbtSave&S   保存單擊時保存談話內容
TBitBtn        bbtClose&C  關閉單擊時關閉此窗口(設置Kind=bkClose)
TEdit          edTalk     在此輸入談話內容
TMemo   &nb

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宿迁市| 专栏| 武义县| 田东县| 噶尔县| 梁平县| 塔城市| 淅川县| 介休市| 娄底市| 沽源县| 乾安县| 建德市| 高安市| 衡南县| 禹州市| 东安县| 嵊州市| 怀安县| 淄博市| 麻阳| 黑水县| 太谷县| 宜城市| 格尔木市| 巴彦淖尔市| 全州县| 门源| 静乐县| 六安市| 金门县| 丹江口市| 大安市| 桑日县| 儋州市| 庆元县| 东乌珠穆沁旗| 新乡市| 德钦县| 沿河| 竹北市|