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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

使用Sockets

2019-11-17 05:32:46
字體:
供稿:網(wǎng)友

  使用sockets Socket控件讓你建立一個利用TCP/ip和有關(guān)的協(xié)議與其他系統(tǒng)進(jìn)行通信的應(yīng)用。使用Sockets,你能夠讀和寫通過它連接的其他機器,而不用擔(dān)心實際的網(wǎng)絡(luò)軟件的相關(guān)細(xì)節(jié)。Sockets提供基于TCP/IP協(xié)議的連接。除此以外還能很好的工作,在其他相關(guān)的協(xié)議,例如Xerox Network System (XNS), Digital's DEC net, or Novell's IPX/SPX 家族。
C++ Builder提供你寫網(wǎng)絡(luò)服務(wù)器或客戶應(yīng)用程序去讀和寫其他的系統(tǒng)。一個服務(wù)或客戶程序通常專注于一個單一的服務(wù)如超文本傳送協(xié)議(HTTP)或文件傳輸協(xié)議(FTP)。使用server sockets,一個應(yīng)用程序可以提供這些服務(wù)中的一個去連接一個希望使用服務(wù)的客戶程序。Client sockets答應(yīng)一個應(yīng)用使用這些服務(wù)中的一個去連接提供這個服務(wù)的服務(wù)應(yīng)用。
使用sockets去寫應(yīng)用程序,你必須理解下面這些知識:
一、服務(wù)工具
當(dāng)你需要寫網(wǎng)絡(luò)服務(wù)或客戶應(yīng)用時,Sockets提供一種接合。對于許多服務(wù),象
HTTP 或 FTP,第三方服務(wù)商提供這些服務(wù)已經(jīng)相當(dāng)有效。有些甚至隨著操作系統(tǒng)捆綁而來,以便不用你自己寫。然而,當(dāng)你想更多的控制服務(wù)的實現(xiàn),如想讓你的應(yīng)用程序與網(wǎng)絡(luò)通信更加緊密,或當(dāng)沒有一個服務(wù)能提供你非凡需要的服務(wù)時,你可能想建立你自己的服務(wù)或客戶應(yīng)用。例如,工作在分布式data sets時,你可能想為數(shù)據(jù)庫寫一層與其他系統(tǒng)通信的應(yīng)用。想使用Sockets實現(xiàn)一個服務(wù),你必須理解:

1.服務(wù)協(xié)議
在你寫一個網(wǎng)絡(luò)服務(wù)或客戶程序前,你必須明白你的應(yīng)用將提供或使用什么服務(wù)。你的網(wǎng)絡(luò)應(yīng)用必須支持許多服務(wù)的標(biāo)準(zhǔn)協(xié)議。假如你為標(biāo)準(zhǔn)的服務(wù)例如HTTP,FTP寫網(wǎng)絡(luò)應(yīng)用,或even finger or time,你必須先理解與其他系統(tǒng)通信所使用的協(xié)議。非凡服務(wù)細(xì)節(jié)你必須看提供的或使用的文檔。
假如你的應(yīng)用程序提供一個新的服務(wù)與其他系統(tǒng)通信,第一步是為這個服務(wù)的
服務(wù)端和客戶端設(shè)計通信協(xié)議。什么信息將發(fā)送?如何整理這些信息?如何對這些信息進(jìn)行編碼?

應(yīng)用程序通信
經(jīng)常的,你的網(wǎng)絡(luò)服務(wù)端或客戶端應(yīng)用程序要提供一層在網(wǎng)絡(luò)軟件和一個應(yīng)用之間使用的服務(wù)。例如,一個HTTP服務(wù)站點在INternet與一個Web 服務(wù)應(yīng)用之間為HTTP請求信息提供內(nèi)容和應(yīng)答。
在你的網(wǎng)絡(luò)應(yīng)用(或客戶應(yīng)用)和網(wǎng)絡(luò)軟件之間Sockets 提供一個接口。你必須提供一個接口,在你的應(yīng)用程序與應(yīng)用間使用。你可以拷貝第三方服務(wù)商提供的標(biāo)準(zhǔn)API(例如ISAPI),或你可以設(shè)計和發(fā)布你自己的API.

2.理解服務(wù)和端口
許多標(biāo)準(zhǔn)服務(wù)都有關(guān)聯(lián)的、指定的端口號。當(dāng) 執(zhí)行服務(wù)時,你可以為服務(wù)考慮一個端口號。假如你實現(xiàn)一個標(biāo)準(zhǔn)服務(wù), Windows socket objects 提供一些方法讓你為服務(wù)尋找端口號。假如提供一個新的服務(wù),在基于Windows 95 或 NT機器上,你能夠在文件Services中為你的服務(wù)指定一個相關(guān)聯(lián)的端口號。設(shè)置Services文件的更多信息請看微軟 的Windows Sockets文檔。

二、Socket連接的類型
Socket連接可以分成三個基本的類型,它們反映了如何開始連接和本地Socket 連接是什么。這三個類型是:

1.客戶端連接
客戶端連接是一個本地系統(tǒng)的客戶端socket與一個遠(yuǎn)程系統(tǒng)上的服務(wù)端Socket連接。客戶端連接由客戶端Socket開始。首先,客戶端Socket必須描述它想連接到的服務(wù)端Socket. 接著客戶端socket查找服務(wù)端socket,當(dāng)找到服務(wù)器時,就要求連接。服務(wù)端socket可能不能完成正確的連接。服務(wù)器sockets維持一個客戶端請求隊列,在他們有時間時完成連接。當(dāng)服務(wù)端socket接受客戶端連接,服務(wù)端socket
將向它想連接的客戶socket發(fā)送一個完整的描述,客戶端的連接完成。

2.傾聽連接
服務(wù)器 socket不會去定位客戶端,代替的,他們形成被動的,"半連接"狀態(tài),傾聽來自客戶端的請求。服務(wù)器 sockets形成一個隊列,存放 它們聽到的連接請求。這個隊列記錄著客戶端連接請求就象他們已連接進(jìn)來一樣。當(dāng)服務(wù)器sockets同意客戶連接請求時,它形成一個新的socket去連接客戶端,因此這個傾聽連接能保持開放狀態(tài)答應(yīng)其他客戶端請求。

3.服務(wù)端連接
當(dāng)傾聽socket同意一個客戶端請求時,服務(wù)器端socket形成一個服務(wù)器連接。當(dāng)服務(wù)器端同意連接時,向客戶端發(fā)送一個服務(wù)端socket描述以完成連接,當(dāng)客戶端socket收到這個描述時這個連接得到確認(rèn),連接完成。一但連接到客戶端的Socket完成,服務(wù)端連接就不能識別從一個客戶端來的連接。末端雙方有同樣的能力去接收同樣的事件類型。只有傾聽(listening)連接是根本不同的,它只有一個單一的末端。

三、sockets描述
Sockets讓你的網(wǎng)絡(luò)應(yīng)用軟件通過網(wǎng)絡(luò)與其他系統(tǒng)進(jìn)行通信。在網(wǎng)絡(luò)連接中每個socket可以看成一個終端點。它有一個指定的地址。

*這個系統(tǒng)正在運行
*它理解的接口類型
*用來連接的端口
一個完整的socket連接描述,你必須提供sockets 在連接兩端的地址。在你開始一個socket連接前,你必須完整的描述你想得到的連接。有些信息可以從你的應(yīng)用
軟件運行的系統(tǒng)平臺上得到。例如,你不需要描述一個客戶端socket的本地IP地址--這個信息可以從操作系統(tǒng)上獲得。你必須提供你工作所依靠的socket的類型的信息。客戶端socket必須描述他們想連接的服務(wù)器。偵聽服務(wù)器sockets必須描述他們提供反應(yīng)的服務(wù)器的端口。一個socket 連接終端的完整描述包括兩部分:


1.IP地址
主機是這樣一個系統(tǒng),它運行著包含有socket的應(yīng)用程序。你必須描述主機給socket,通過給出主機的IP地址來完成這個描述。IP地址是一個有四個數(shù)字(byte)值的,在標(biāo)準(zhǔn)internet點付內(nèi)的字符串。
例如123.197.1.2
一個簡單的系統(tǒng)可以支持多于一個的IP地址。IP地址通常難于記憶并且輕易打錯。一個可供選擇的方法是使用主機名。主機名就是IP地址的別名,它就是你常看到的統(tǒng)一資源定位(URLs)。它是一個字符串,包括了域名和服務(wù)。
例如 http://www.wsite.com
許多內(nèi)部網(wǎng)提供給主機的名字對應(yīng)的系統(tǒng)IP地址是internetIP地址。在windows95 和NT機器上,假如一個主機名不能用,你可以在HOSTS文件中為你的本地IP地址(這個本地IP地址應(yīng)該是指你想連接的主機IP地址--zyqsj)建立一個進(jìn)入的名字。
關(guān)于HOSTS文件的更多信息請看WINDOWS SOCKETS的文檔。
服務(wù)器sockets不需要指定主機。本地IP地址可以從系統(tǒng)中讀到。假如本地系統(tǒng)支持多于一個的IP地址,服務(wù)器sockets將同時在所有的IP地址上偵聽客戶端請求。當(dāng)一個服務(wù)器socket同意一個連接,客戶端提供一個遠(yuǎn)程IP地址。客戶sockets必須指定遠(yuǎn)程主機通過提供主機名或者IP地址。

在主機名和IP地址間作一個選擇
許多應(yīng)用軟件使用一個主機名去指定一個系統(tǒng)。主機名輕易記住和輕易檢查排版錯誤。進(jìn)一步講,服務(wù)器能改變系統(tǒng)或與IP地址關(guān)聯(lián)的非凡的主機名。使用一個主機名,能夠答應(yīng)客戶端通過主機名描述找到抽象的站點,即使主機使用一個新的IP地址。
假如主機名是未知的,客戶socket必須指定服務(wù)器系統(tǒng)使用的IP地址。通過給一個IP地址來指定服務(wù)器將更快。當(dāng)你提供主機名時,socket在定位服務(wù)器系統(tǒng)前,必須搜尋與這個主機名相關(guān)的IP地址。

2.端口號
雖然IP得地址提供了足夠的信息去找到socket連接中位于另一端的系統(tǒng),你通常還需要指定那個系統(tǒng)的端口號。沒有端口號,一個系統(tǒng)在同一時間只能進(jìn)行一個單一的連接。端口號是唯一標(biāo)識那答應(yīng)一個獨立系統(tǒng)連接到支持同時多個連接的主機,每個連接都必須指定一個端口號。
在網(wǎng)絡(luò)應(yīng)用中,對于服務(wù)器工具來說端口號是一個數(shù)字代碼。有一個習(xí)慣就是偵聽服務(wù)連接到他們自己固定的端口號上,以便他們能找到客戶端sockets.服務(wù)器socket監(jiān)聽為他們提供服務(wù)的相關(guān)端口號。當(dāng)他們答應(yīng)給予一個客戶端socket連接時,他們創(chuàng)建一個獨立的socket連接,使用不同的專用的端口號。通過這個方法,能持續(xù)的監(jiān)聽相關(guān)服務(wù)的端口號。
客戶端socket使用一個專用的本地端口號,就不用其他的socket去尋找它們。他們指定他們想連接的服務(wù)器端socket的端口號,這樣他們就能找到服務(wù)器應(yīng)用程序。經(jīng)常的,這個端口號是通過命名想連接的服務(wù)來間接指定的。

四、使用socket控件
C++Builder提供兩個socket控件,客戶端sockets和服務(wù)器sockets.他們答應(yīng)你的網(wǎng)絡(luò)應(yīng)用構(gòu)成連接其他的機器和答應(yīng)你通過這個連接來讀寫信息。與每個socket控件相關(guān)聯(lián)的是windows socket對象,它們在終端的的作用是一個實際的socket連接。socket控件使用windows socket對象去封裝windows socket API 調(diào)用,所以你的應(yīng)用不用去關(guān)心連接建立的細(xì)節(jié)或治理socket信息。
假如你想利用windows socket API調(diào)用或自定義連接細(xì)節(jié),socket控件提供了便利,你可以使用windows socket對象的PRoperies,events和方法。

1.使用客戶端sockets
添加一個客戶端socket控件(TClientSocket)到你的form或data module 使你的應(yīng)用成為一個TCP/IP客戶。客戶sockets答應(yīng)你指定你想連接的服務(wù)器socket和你希望服務(wù)器提供的服務(wù)。一但你描述你想得到的連接,你可以使用客戶socket控件去完成連接服務(wù)。
每個客戶socket控件使用獨立的客戶windows socket對象(TClientWinSocket)去應(yīng)答連接中的客戶終端。使用客戶sockets去:

A.指定想得到的服務(wù)
客戶socket控件有一個數(shù)字properties,答應(yīng)你指定想連接的服務(wù)器系統(tǒng)和端口。你可以通過主機名來指定服務(wù)器系統(tǒng),使用Host property。
假如你不知道主機名,或者你關(guān)心找到服務(wù)器的速度,你可以指定服務(wù)器系統(tǒng)的IP地址,通過使用 Address property。你必須指定IP地址和主機名中的一個。
假如你兩個都指定,客戶socket控件將

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 满城县| 宿州市| 高平市| 洮南市| 石景山区| 台安县| 巴彦县| 勃利县| 海伦市| 改则县| 长葛市| 巴林右旗| 达日县| 湖口县| 岳阳市| 抚顺市| 宁波市| 长寿区| 舟曲县| 石林| 洮南市| 五河县| 邵阳市| 名山县| 会东县| 贵阳市| 永安市| 靖远县| 马关县| 武城县| 伊金霍洛旗| 兴隆县| 洪江市| 西和县| 二手房| 黑龙江省| 莆田市| 栖霞市| 桐城市| 富平县| 咸丰县|