• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

      2009-12-17 06:22劉鐘濤
      河南圖書館學(xué)刊 2009年4期
      關(guān)鍵詞:數(shù)字圖書館

      劉鐘濤 申 康

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

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

      1 Socket的概念

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

      從用戶的角度來(lái)看套接字是通信端點(diǎn)的抽象概念,它為用戶提供了發(fā)送和接受數(shù)據(jù)的機(jī)制,Socket用于描述IP地址和端口,是一個(gè)通信鏈的句柄。應(yīng)用程序通常通過“套接字”向網(wǎng)絡(luò)發(fā)出請(qǐng)求或者應(yīng)答網(wǎng)絡(luò)請(qǐng)求。其中應(yīng)用程序告訴Socket執(zhí)行什么任務(wù),Socket將這些命令翻譯成TCP/IP協(xié)議的通信語(yǔ)言,再通過和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ò)編程實(shí)現(xiàn)網(wǎng)絡(luò)通信的重要組成部分。首先在服務(wù)器與客戶端之間定義TCP通信協(xié)議,并創(chuàng)建Socket套接字,利用該套接字建議一套可靠的、基于面向連接的通信接口,客戶端和服務(wù)器在該連接上傳輸數(shù)據(jù),客戶端發(fā)送請(qǐng)求,服務(wù)器監(jiān)聽來(lái)自客戶的請(qǐng)求,并作出響應(yīng)服務(wù)。

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

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

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

      3.1.1 Socket()函數(shù)

      Int socket(int domain, int type, int protocol)。Socket()用來(lái)建立一個(gè)Socket數(shù)據(jù)結(jié)構(gòu)分配存儲(chǔ)空間,通知系統(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()用來(lái)設(shè)置給參數(shù)sockfd的socket一個(gè)名稱。此名稱由參數(shù)my_addr指向包含有本機(jī)IP地址和端口號(hào)等信息的指針,當(dāng)創(chuàng)建了一個(gè)Socket以后,套接字?jǐn)?shù)據(jù)結(jié)構(gòu)中有一個(gè)默認(rèn)的IP地址和默認(rèn)的端口號(hào)。一個(gè)服務(wù)程序必須調(diào)用bind函數(shù)將Socket與本機(jī)IP地址和一個(gè)特定端口相關(guān)聯(lián),隨后可以在該端口監(jiān)聽服務(wù)請(qǐng)求。

      3.1.3 Listen()函數(shù)

      Int listen(int s, int backlog)。Listen()用來(lái)等待參數(shù)s的socket連線。參數(shù)backlog指定服務(wù)器端同時(shí)能處理的最大客戶端連接要求,如果連接數(shù)目達(dá)此上限則,client端將收到ECONNREFUSED的錯(cuò)誤。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ù)。第一個(gè)參數(shù)指定接收端套接字描述符;第二個(gè)參數(shù)指明一個(gè)緩沖區(qū),該緩沖區(qū)用來(lái)存放Recv/Send函數(shù)接收/發(fā)送到的數(shù)據(jù);第三個(gè)參數(shù)指明buf緩沖區(qū)的長(zhǎng)度。

      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地址和端口號(hào)的指針;Connect函數(shù)啟動(dòng)和遠(yuǎn)程主機(jī)的直接連接,Socket執(zhí)行體選擇一個(gè)未被占用的端口,并通知你的程序數(shù)據(jù)什么時(shí)候到達(dá)打斷口。

      3.1.6 Closesocket()函數(shù)

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

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

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

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

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

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

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

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

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

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

      參考文獻(xiàn):

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

      [2] Andrew S.Tanenbaum,熊桂喜譯.計(jì)算機(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ì)算機(jī)應(yīng)用研究,2001,(8).

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

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

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

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

      猜你喜歡
      數(shù)字圖書館
      我國(guó)醫(yī)學(xué)數(shù)字圖書館研究的文獻(xiàn)計(jì)量分析
      互聯(lián)網(wǎng)思維下數(shù)字圖書館個(gè)性化服務(wù)建設(shè)研究
      談圖書館資源與小學(xué)數(shù)學(xué)教學(xué)有效整合
      論新時(shí)代公共圖書館員的職業(yè)素養(yǎng)
      充電者的知識(shí)殿堂——數(shù)字圖書館
      高校圖書館的未來(lái)發(fā)展模式芻議
      淺析“互聯(lián)網(wǎng)+”時(shí)代的圖書館管理
      基于云計(jì)算的數(shù)字圖書館建設(shè)與服務(wù)模式研究
      芻議數(shù)字圖書館計(jì)算機(jī)網(wǎng)絡(luò)的安全技術(shù)及其防護(hù)策略
      阜新| 靖宇县| 商洛市| 柘荣县| 苍梧县| 锡林浩特市| 嵊泗县| 元氏县| 金昌市| 清镇市| 会理县| 河南省| 仙游县| 华蓥市| 麦盖提县| 邹平县| 黄陵县| 阜宁县| 海盐县| 南康市| 岳池县| 牙克石市| 托克托县| 五原县| 河北区| 筠连县| 高密市| 怀化市| 东丰县| 宜章县| 丽水市| 东阿县| 广宁县| 祥云县| 新疆| 信宜市| 上饶市| 南宁市| 永兴县| 濉溪县| 南平市|