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

        ?

        Socket在數(shù)字圖書館中的應(yīng)用

        2009-12-17 06:22:28劉鐘濤
        河南圖書館學(xué)刊 2009年4期

        劉鐘濤 申 康

        關(guān)鍵詞:Socket;數(shù)字圖書館;代理服務(wù)器

        摘 要:數(shù)字圖書館的實現(xiàn)以網(wǎng)絡(luò)編程為基礎(chǔ),Socket是TCP/IP協(xié)議的接口,服務(wù)器和客戶端利用Socket建立了多個數(shù)據(jù)傳輸通道,提出了TCP/IP協(xié)議下Socket并發(fā)通信的過程和方法,從而實現(xiàn)數(shù)據(jù)的并發(fā)傳輸。中圖分類號:G250.76文獻(xiàn)標(biāo)識碼:A 文章編號:1003-1588(2009)04-0079-03

        1 Socket的概念

        TCP/IP協(xié)議(Transmission Control Protocol/Internet Protocol)叫做傳輸控制/網(wǎng)際協(xié)議,又叫網(wǎng)絡(luò)通訊協(xié)議,這個協(xié)議是Internet國際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ)。 TCP/IP是用于計算機(jī)通信的一組協(xié)議,我們通常稱它為TCP/IP協(xié)議族,TCP/IP為網(wǎng)絡(luò)的應(yīng)用服務(wù)互聯(lián)和共享提供了有效的手段,Socket接口是TCP/IP網(wǎng)絡(luò)的API,Socket接口定義了許多函數(shù)或例程,程序員可以用它們來開發(fā)TCP/IP網(wǎng)絡(luò)上的應(yīng)用程序。應(yīng)用程序通常通過“套接字”向網(wǎng)絡(luò)發(fā)出請求或者應(yīng)答網(wǎng)絡(luò)請求,Internet網(wǎng)絡(luò)的編程必須使用Socket接口。是通信的基石,是支持TCP/IP網(wǎng)絡(luò)通訊協(xié)議的基本操作單元,所謂Socket通常也稱作“套接字”,可以將套接字看作不同主機(jī)間進(jìn)程進(jìn)行雙向通信的端點,它構(gòu)成了整個網(wǎng)絡(luò)的編程界面(如圖1)。

        從用戶的角度來看套接字是通信端點的抽象概念,它為用戶提供了發(fā)送和接受數(shù)據(jù)的機(jī)制,Socket用于描述IP地址和端口,是一個通信鏈的句柄。應(yīng)用程序通常通過“套接字”向網(wǎng)絡(luò)發(fā)出請求或者應(yīng)答網(wǎng)絡(luò)請求。其中應(yīng)用程序告訴Socket執(zhí)行什么任務(wù),Socket將這些命令翻譯成TCP/IP協(xié)議的通信語言,再通過和TCP/IP進(jìn)行交流,最后由TCP/IP協(xié)議將其傳送到網(wǎng)絡(luò)進(jìn)行網(wǎng)絡(luò)通信。

        2 數(shù)字圖書館通信原理

        作為網(wǎng)絡(luò)上公認(rèn)的通信標(biāo)準(zhǔn),TCP/IP協(xié)議成為網(wǎng)絡(luò)編程實現(xiàn)網(wǎng)絡(luò)通信的重要組成部分。首先在服務(wù)器與客戶端之間定義TCP通信協(xié)議,并創(chuàng)建Socket套接字,利用該套接字建議一套可靠的、基于面向連接的通信接口,客戶端和服務(wù)器在該連接上傳輸數(shù)據(jù),客戶端發(fā)送請求,服務(wù)器監(jiān)聽來自客戶的請求,并作出響應(yīng)服務(wù)。

        Socket接口是TCP/IP網(wǎng)絡(luò)的API,Socket接口定義了許多的函數(shù)和例程。目前,網(wǎng)絡(luò)上絕大多數(shù)的通信采用的都是服務(wù)器/客戶端(Server/Client)機(jī)制,一般情況下,在服務(wù)器端,當(dāng)有一個客戶端連接請求到來時,服務(wù)器與客戶端建立連接,然后服務(wù)器端一個進(jìn)程專門處理與客戶端的通信,子進(jìn)程為客戶提供服務(wù),主進(jìn)程繼續(xù)監(jiān)聽其他的客戶進(jìn)程。服務(wù)器掌握每個客戶的Socket,并能夠分辨來自不同客戶機(jī)的數(shù)據(jù),它根據(jù)Socket分別對不同的客戶機(jī)做出不同的響應(yīng)。從而對多個客戶端并發(fā)進(jìn)行通信。服務(wù)器/客戶端利用Socket數(shù)據(jù)傳輸流程(如圖2)。

        3 數(shù)字圖書館通信原理

        3.1 數(shù)字圖書館實現(xiàn)函數(shù)

        3.1.1 Socket()函數(shù)

        Int socket(int domain, int type, int protocol)。Socket()用來建立一個Socket數(shù)據(jù)結(jié)構(gòu)分配存儲空間,通知系統(tǒng)建立一通信端口。參數(shù)domain指定使用何種的地址類型,目前僅支持PF_INET(TCP/IP協(xié)議族)格式。

        3.1.2 Bind()函數(shù)

        Int bind(int sockfd, struct sockaddr my_addr, int addrlen)。Bind()用來設(shè)置給參數(shù)sockfd的socket一個名稱。此名稱由參數(shù)my_addr指向包含有本機(jī)IP地址和端口號等信息的指針,當(dāng)創(chuàng)建了一個Socket以后,套接字?jǐn)?shù)據(jù)結(jié)構(gòu)中有一個默認(rèn)的IP地址和默認(rèn)的端口號。一個服務(wù)程序必須調(diào)用bind函數(shù)將Socket與本機(jī)IP地址和一個特定端口相關(guān)聯(lián),隨后可以在該端口監(jiān)聽服務(wù)請求。

        3.1.3 Listen()函數(shù)

        Int listen(int s, int backlog)。Listen()用來等待參數(shù)s的socket連線。參數(shù)backlog指定服務(wù)器端同時能處理的最大客戶端連接要求,如果連接數(shù)目達(dá)此上限則,client端將收到ECONNREFUSED的錯誤。Listen()并未開始接收連線,只是設(shè)置socket為listen模式,真正接收客戶端連線的是accept()。

        3.1.4 Recv()/ Send()函數(shù)

        Int recv( SOCKET s,char FAR buf,int len,int flags)。Int send( SOCKET s,const char FAR buf,int len,int flags )。不論是客戶還是服務(wù)器應(yīng)用程序,都用recv/Send函數(shù)從TCP連接的另一端接收/發(fā)送數(shù)據(jù)。第一個參數(shù)指定接收端套接字描述符;第二個參數(shù)指明一個緩沖區(qū),該緩沖區(qū)用來存放Recv/Send函數(shù)接收/發(fā)送到的數(shù)據(jù);第三個參數(shù)指明buf緩沖區(qū)的長度。

        3.1.5 Connect()函數(shù)

        Int connect(int sockfd, struct sockaddr serv_addr,int addrlen)。Sockfd是socket函數(shù)返回的socket描述符;serv_addr是包含遠(yuǎn)端主機(jī)IP地址和端口號的指針;Connect函數(shù)啟動和遠(yuǎn)程主機(jī)的直接連接,Socket執(zhí)行體選擇一個未被占用的端口,并通知你的程序數(shù)據(jù)什么時候到達(dá)打斷口。

        3.1.6 Closesocket()函數(shù)

        Closesocket(SOCKET sockid)。在完成數(shù)據(jù)傳輸任務(wù)后,需要調(diào)用Closesocket()來關(guān)閉連接和釋放Socket結(jié)束本次通話。

        3.2 SOCKET實現(xiàn)數(shù)字圖書館服務(wù)器端通信步驟

        (1)聲明一個套接字類型的變量,需要在該變量定義中服務(wù)器IP地址和通信端口并指明協(xié)議類型。

        (2)服務(wù)器端通過端口監(jiān)聽進(jìn)入等待客戶端連接的狀態(tài)。

        (3)如果收到連接,則從對方連接請求中獲取對方的IP地址和通信端口,并向?qū)Ψ桨l(fā)送連接成功的應(yīng)答信號,服務(wù)完成后,終止該進(jìn)程與客戶的通信鏈路。

        (4)端口繼續(xù)監(jiān)聽服務(wù)請求,等待另一用戶。

        3.3 在客戶端利用基于TCP/IP和SOCKET通信步驟

        (1)聲明一個套接字類型的變量,需要在該變量定義中提供客戶端IP地址和通信端口并指明協(xié)議類型。

        (2)向遠(yuǎn)程服務(wù)器發(fā)出連接請求,SOCKET數(shù)據(jù)結(jié)構(gòu)提供了一個網(wǎng)絡(luò)連接的五中信息,分別是通信協(xié)議、本地協(xié)議地址、本地主機(jī)端口、遠(yuǎn)端主機(jī)地址和遠(yuǎn)端協(xié)議端口。

        (3)如果連接成功,會收到對方的應(yīng)答信號,以后的通信就可以通過通信通道進(jìn)行請求,結(jié)束后關(guān)閉通道并終止連接。

        參考文獻(xiàn):

        [1] 顧韻華,周淑琴等.DELPHI實用教程[M].北京:電子工業(yè)出版社,2003.

        [2] Andrew S.Tanenbaum,熊桂喜譯.計算機(jī)網(wǎng)絡(luò)[M].北京:清華大學(xué)出版社,1998.

        [3] 周天明,汪文勇.TCP/IP網(wǎng)絡(luò)原理與技術(shù)[M].北京:清華大學(xué)出版社,1998.

        [4] 何進(jìn).基于Socket的TCP/IP網(wǎng)絡(luò)通訊模式研究[J].計算機(jī)應(yīng)用研究,2001,(8).

        [5] 雷斌、楊建華.Visual C++6.0網(wǎng)絡(luò)編程技術(shù)[M].北京:人民郵電出版社,2000.

        [6] 謝希仁.計算機(jī)網(wǎng)絡(luò)[M].北京:清華大學(xué)出版社,1999.

        [7] 黃超.Windows網(wǎng)絡(luò)編程[M].北京:人民郵電出版社,2003.

        [8] 黃建華等.Delphi程序設(shè)計[M].北京:清華大學(xué)出版社,2002.

        久久久久欧洲AV成人无码国产| 鲁丝一区鲁丝二区鲁丝三区| 高清亚洲成av人片乱码色午夜| 国产精品区二区东京在线| 少妇高潮在线精品观看| 2021亚洲国产精品无码| 狠狠色噜噜狠狠狠狠米奇777| 国产成人啪精品| 国产黄三级三级三级三级一区二区 | 男女av一区二区三区| 国产成人涩涩涩视频在线观看| 国产色噜噜| 欧美丝袜秘书在线一区| 极品少妇人妻一区二区三区| 亚洲精品中文字幕乱码影院| 在线 | 一区二区三区四区| 亚洲中文字幕乱码| 中文字幕一区二区三在线| 操风骚人妻沉沦中文字幕| 无码一区二区三区在线| 亚洲不卡无码高清视频| 国产女主播大秀在线观看| а天堂中文在线官网在线| 福利视频一二三在线观看| a观看v视频网站入口免费| 日韩人妻免费一区二区三区| 国产精品亚洲第一区二区三区| 日躁夜躁狠狠躁2001| av中文字幕综合在线| 一个人的视频免费播放在线观看| 国产三级精品视频2021| 成人无码免费一区二区三区| 91亚洲欧洲日产国码精品 | 日韩精品中文字幕一区二区| 无码国产69精品久久久久孕妇| 狠狠躁夜夜躁人人爽天天天天97| 国产亚洲sss在线观看| 亚洲97成人精品久久久 | 亚洲av无码av制服另类专区| 熟女人妻丰满熟妇啪啪| 久久伊人精品中文字幕有|