999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

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

劉鐘濤 申 康

關(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ā)通信的過(guò)程和方法,從而實(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)用程序通常通過(guò)“套接字”向網(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)用程序通常通過(guò)“套接字”向網(wǎng)絡(luò)發(fā)出請(qǐng)求或者應(yīng)答網(wǎng)絡(luò)請(qǐng)求。其中應(yīng)用程序告訴Socket執(zhí)行什么任務(wù),Socket將這些命令翻譯成TCP/IP協(xié)議的通信語(yǔ)言,再通過(guò)和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ù)器端通過(guò)端口監(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),以后的通信就可以通過(guò)通信通道進(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.

主站蜘蛛池模板: 国产在线无码一区二区三区| 国产美女精品一区二区| 亚洲人成影视在线观看| 在线观看国产精美视频| 97精品国产高清久久久久蜜芽 | 国产视频 第一页| 久久精品无码一区二区日韩免费| 国产乱子伦无码精品小说| 亚洲精品制服丝袜二区| 亚洲精品你懂的| 伊人久久大香线蕉综合影视| 精品久久久无码专区中文字幕| 午夜老司机永久免费看片| 成年av福利永久免费观看| 91精品亚洲| 视频二区欧美| 91成人在线免费视频| 免费毛片视频| 伊人久久婷婷| 97色婷婷成人综合在线观看| 欧美啪啪一区| 国产三级成人| 欧美日韩在线国产| 亚洲品质国产精品无码| 午夜三级在线| 中文字幕在线一区二区在线| 国产精品冒白浆免费视频| 91视频99| 午夜电影在线观看国产1区| 国产凹凸一区在线观看视频| 亚洲国产看片基地久久1024| 99九九成人免费视频精品| 欧洲熟妇精品视频| 国产精品一线天| 免费人欧美成又黄又爽的视频| 成人福利在线看| 欧美a在线| 亚洲AV电影不卡在线观看| 欧美日韩导航| 日韩精品专区免费无码aⅴ| 又爽又黄又无遮挡网站| 毛片免费在线视频| 暴力调教一区二区三区| 国产黄在线免费观看| 亚洲人成网线在线播放va| 国产精品吹潮在线观看中文| 99ri精品视频在线观看播放| 久久久精品国产SM调教网站| 午夜福利视频一区| 国产9191精品免费观看| 视频在线观看一区二区| 国产黄网站在线观看| 国产剧情一区二区| 伊人成色综合网| 国产91高跟丝袜| 成人在线观看不卡| 激情综合网激情综合| 青青操国产| 亚洲欧美在线精品一区二区| 婷婷色婷婷| 国产91丝袜| 国产精品自在自线免费观看| 无码在线激情片| 在线国产欧美| 全部毛片免费看| 无码人中文字幕| 精品一区国产精品| 国产成人亚洲精品色欲AV| 精品亚洲麻豆1区2区3区 | 欧美在线国产| 四虎影视国产精品| 亚洲熟妇AV日韩熟妇在线| 精品国产免费第一区二区三区日韩| 国产av色站网站| 高清码无在线看| 国产极品美女在线播放| 在线欧美a| 中文字幕人妻无码系列第三区| 99手机在线视频| 成人中文字幕在线| 亚洲成人黄色在线| 人妻中文久热无码丝袜|