亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        客戶端與服務(wù)器端的Socket通信

        2009-04-29 00:00:00王偉平
        電腦知識(shí)與技術(shù) 2009年4期

        摘要:介紹有關(guān)網(wǎng)絡(luò)客戶服務(wù)模型的socket通信應(yīng)用,采用delphi中對(duì)Windows API進(jìn)行了完美封裝的套接字組件,設(shè)計(jì)了一個(gè)實(shí)現(xiàn)面向連接的通信方式的實(shí)際例子,說(shuō)明兩者是如何進(jìn)行通信。

        關(guān)鍵詞:socket;delphi;通信;客戶端;服務(wù)器端

        中圖分類號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:A1文章編號(hào):1009-3044(2009)04-812-02

        The Socket Communication about Client and Server

        XIA Ling, WANG Wei-ping

        (School of Information Science and Engineering, Central South University, Changsha 410083,China)

        Abstract: Customer service on the network model of the socket communications applications, using the Windows API delphi in the perfect package for the socket components, a design-oriented means of communication linking the actual example, to explain how they are communicating.

        Key words: socket; delphi; communication; client; server

        1 引言

        大部分網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn)都由客戶端(Client)和服務(wù)器端(Server)來(lái)協(xié)作完成。這種模型本質(zhì)上涉及兩個(gè)不同的程序,通常這兩個(gè)程序在不同機(jī)器上運(yùn)行。這些機(jī)器之間都有網(wǎng)絡(luò)連接。服務(wù)器端程序提供服務(wù)并對(duì)來(lái)自客戶程序的請(qǐng)求作成響應(yīng)。而客戶端程序則是在使用者和服務(wù)器端程序之間建立某種溝通的渠道,或者是作為使用服務(wù)器端提供的某種網(wǎng)絡(luò)服務(wù)的工具。

        一個(gè)典型的服務(wù)器與客戶機(jī)之間的交互可能如下所示:

        1) 客戶機(jī)提出一個(gè)請(qǐng)求;

        2) 服務(wù)器收到客戶機(jī)的請(qǐng)求,進(jìn)行分析處理;

        3) 服務(wù)器將運(yùn)行處理的結(jié)果返回給客戶機(jī)。

        通常一個(gè)服務(wù)器需要向多個(gè)客戶機(jī)提供服務(wù)。因此對(duì)服務(wù)器來(lái)說(shuō),還需要考慮如何有效地處理多個(gè)客戶的請(qǐng)求。

        2 服務(wù)器與客戶端的Socket通信類型

        Socket的連接類型可以分為兩種,分別是面向連接的字節(jié)流類型(Sock_stream)和面向無(wú)連接數(shù)據(jù)報(bào)類型(Sock_dgram)。

        面向無(wú)連接數(shù)據(jù)報(bào)類型的Socket工作流程比較簡(jiǎn)單,雙方不需要進(jìn)行太多的溝通與交互??蛻魴C(jī)直接將用戶的請(qǐng)求打包發(fā)送到服務(wù)器端,省略了建立一個(gè)固定信息通道的過(guò)程。服務(wù)器端也是直接將處理的結(jié)果發(fā)送給客戶端。每個(gè)發(fā)送的數(shù)據(jù)報(bào)都攜帶有傳遞所需要的所有地址信息。其工作流程如圖1所示。

        面向連接的字節(jié)流類型的Socket工作中有比較嚴(yán)格的操作次序,工作的原理也比較復(fù)雜。在這種類型的Socket的工作過(guò)程中,必須首先啟動(dòng)服務(wù)器端,通過(guò)調(diào)用socket()函數(shù)建立一個(gè)Socket對(duì)象,然后調(diào)用Bind()函數(shù)將該Socket對(duì)象和本地網(wǎng)絡(luò)地址綁定到一起。再調(diào)用Listen()函數(shù)使該Socket對(duì)象處于偵聽(tīng)狀態(tài),并規(guī)定它的最大請(qǐng)求的數(shù)量。其工作流程如圖2所示。

        總的來(lái)說(shuō),無(wú)連接和面向連接的通信方式各有長(zhǎng)處和短處。在僅僅涉及少量的信息傳遞的場(chǎng)合可以使用無(wú)連接操作;如果涉及大量信息傳遞的場(chǎng)合可以采用面向連接操作。

        3 Delphi的Socket組件

        3.1 Delphi中Socket的操作方式

        根據(jù)連接發(fā)起的方式以及本地Socket要連接的目標(biāo),Socket之間的連接可以分為:客戶端連接、監(jiān)聽(tīng)連接以及服務(wù)器端連接。

        Delphi分別使用ClientSocket組件■和ServerSocket組件■來(lái)操縱客戶端Socket和服務(wù)器端Socket的連接和通信。ClientSocket組件為客戶端組件。它是通信的請(qǐng)求方,也就是說(shuō),它是主動(dòng)地與服務(wù)器端建立連接。ServerSocket組件為服務(wù)器端組件。它是通信的響應(yīng)方,也就是說(shuō),它的動(dòng)作是監(jiān)聽(tīng)以及被動(dòng)接受客戶端的連接請(qǐng)求,并對(duì)請(qǐng)求進(jìn)行回復(fù)。ServerSocket組件可以同時(shí)接受一個(gè)或多個(gè)ClientSocket組件的連接請(qǐng)求,并與每個(gè)ClientSocket組件建立單獨(dú)的連接,進(jìn)行單獨(dú)的通信。

        3.2 ServerSocket的屬性設(shè)置

        · Port是通信的端口,必須設(shè)置。在本文實(shí)例中設(shè)置為95;

        · ServerType服務(wù)器端讀寫(xiě)信息類型,設(shè)置為stThreadBlocking表示異步讀寫(xiě)信息,本文實(shí)例中采用這種方式。

        · ThreadCacheSize,客戶端的最大連接數(shù),就是服務(wù)器端最多允許多少客戶端同時(shí)連接。本文實(shí)例采用默認(rèn)值10。

        3.3 ClientSocket的屬性

        · Port,是通信的端口,必須與服務(wù)器端的設(shè)置相同。否則可能導(dǎo)致兩個(gè)組件發(fā)送的目標(biāo)端口和接收的端口不一致,無(wú)法建立有效的信息傳送連接。

        · ClientType,客戶端讀寫(xiě)信息類型,應(yīng)該與服務(wù)器端的設(shè)置相同,為ctNonBlocking表示異步讀寫(xiě)信息.

        · Host,客戶端要連接的服務(wù)器的ip地址。必須設(shè)置,當(dāng)然也可以在代碼中動(dòng)態(tài)設(shè)置。

        4 應(yīng)用實(shí)例

        4.1 設(shè)計(jì)思路

        實(shí)例包括一個(gè)服務(wù)器端程序與一個(gè)客戶端程序??蛻舳顺绦蚩梢苑诺蕉鄠€(gè)計(jì)算機(jī)上運(yùn)行,同時(shí)與服務(wù)器端進(jìn)行連接通信。

        服務(wù)器程序?qū)崿F(xiàn)以下基本功能:1) 在用戶登錄的時(shí)候記錄用戶登錄所在主機(jī)的IP、主機(jī)名稱等;2) 顯示當(dāng)前在線用戶數(shù)量;3) 可對(duì)當(dāng)前在線用戶執(zhí)行注銷、重啟、關(guān)機(jī)等操作。

        客戶端程序?qū)崿F(xiàn)一些基本功能:1) 顯示當(dāng)前程序的工作狀況;2) 實(shí)現(xiàn)服務(wù)器端發(fā)送的注銷、重啟、關(guān)機(jī)的操作。

        4.2 程序說(shuō)明

        根據(jù)功能的實(shí)際需要,服務(wù)端程序一運(yùn)行,窗體的StringGrid控件就顯示已在線用戶的基本信息。

        代碼如下:

        procedure TfrmServer.displayconnectionsinfo ;//在stringgrid中顯示在線用戶數(shù)據(jù)

        Var i: integer;

        begin

        listbox1.Items.Clear;

        with ServerSocket1 do

        begin

        if (length(arrayconnectionstatus)>=1) then

        stringgrid1.RowCount:=length(arrayconnectionstatus)+1

        else

        stringgrid1.RowCount:=2;

        with stringgrid1 do

        begin

        for i:= 0 to high(arrayconnectionstatus) do

        begin

        with arrayconnectionstatus[i] do

        begin

        cells[0,i+1]:=inttostr(tcsactiveconnections);

        cells[1,i+1]:=''+tcsremotehost;

        cells[2,i+1]:=''+tcsremoteaddress;

        cells[3,i+1]:=''+inttostr(tcsremoteport);

        cells[4,i+1]:=''+tcslocalhost;

        cells[5,i+1]:=''+tcslocaladdress;

        cells[6,i+1]:=''+inttostr(tcslocalport);listbox1.items.Add(tcsremotehost);end;end;end;end;

        end;

        在窗體上,“執(zhí)行”按鈕的Click事件負(fù)責(zé)向指定的在線用戶或全體在線用戶發(fā)送注銷、重啟、關(guān)機(jī)操作指令。

        客戶端程序通過(guò)通信端口接收指令,并做出響應(yīng),彈出關(guān)機(jī)提示對(duì)話框,如需要繼續(xù)使用計(jì)算機(jī)的在線用戶,可點(diǎn)擊“取消”按鈕。

        5 結(jié)束語(yǔ)

        綜上所述,Socket組件相比其它高級(jí)協(xié)議組件如FastNet組件,它的封裝層次較低,程序員可以在它們的基礎(chǔ)上自己定義新的高級(jí)協(xié)議或者是規(guī)定自己的信息交互流程。利用以上代碼,進(jìn)一步拓展的余地也很大,還可以加入一些更細(xì)化的功能,如局域網(wǎng)在線聊天、點(diǎn)對(duì)點(diǎn)傳輸文件等。

        參考文獻(xiàn):

        [1] 趙秀英.Delphi 網(wǎng)絡(luò)高級(jí)編程[M].北京:人民郵電出版社?,2001.83-85.

        [2] 申普兵,行明順,王兆祥,等.計(jì)算機(jī)網(wǎng)絡(luò)與通信[M].北京:人民郵電出版社,2006.9-11.

        [3] 王豐錦,邵新宇.基于SOCKET和多線程的應(yīng)用程序間通信技術(shù)的研究[J].計(jì)算機(jī)應(yīng)用,2000,20(6):65-67.

        [4] 謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)[M].第4版.北京:電子工業(yè)出版社,2003.100-113.

        [5] 計(jì)世網(wǎng).統(tǒng)一通信的五大技術(shù)熱點(diǎn)[EB/OL]. http://tech.c114.net/166/a275630.html.

        [6] 謝安明,邵美珍.使用Socket設(shè)計(jì)網(wǎng)絡(luò)通訊程序[EB/OL]. http://www.cnki.com.cn/Article/CJFD2001-XXGC200101019.htm.

        [7] 曹偉.基于網(wǎng)絡(luò)的遠(yuǎn)程控制系統(tǒng)[D].長(zhǎng)春:吉林大學(xué),2005.

        中文字幕天天躁日日躁狠狠躁免费 | 一本色道久久综合中文字幕| 中文亚洲一区二区三区| 一区二区三区四区国产99| 无码人妻av免费一区二区三区| 熟女俱乐部五十路二区av| 中文字幕有码在线视频| 精品一区二区三区国产av| 无码a级毛片免费视频内谢5j| 亚洲国产日韩欧美一区二区三区 | 中文亚洲av片不卡在线观看| 欧美亚洲国产片在线播放| 免费看一级a女人自慰免费| 蜜桃色av一区二区三区麻豆| 亚洲国产精品一区二区毛片| 免费看美女被靠的网站| 波多野结衣国产一区二区三区| 素人系列免费在线观看| 国产一区二区三区av免费| 无码aⅴ免费中文字幕久久| 中文字幕高清在线一区二区三区| 人妻少妇中文字幕久久69堂| 深夜一区二区三区视频在线观看| 亚洲精品国产精品国自产| 国产熟妇搡bbbb搡bbbb搡| 久久91精品国产91久久麻豆 | 亚洲最新中文字幕一区| 精品露脸熟女区一粉嫩av| 无码精品人妻一区二区三区av| 亚洲日韩乱码中文无码蜜桃臀| 日韩精品人妻中文字幕有码| 亚洲精品视频中文字幕| 午夜视频在线在免费| 国产免费一级在线观看| 一区二区三区av资源网| 丝袜美腿亚洲一区二区| 成人看片黄a免费看那个网址| 囯产精品无码一区二区三区AV| 三级国产自拍在线观看| 一本色道久久88亚洲精品综合| 亚洲国产成人精品女人久久久|