




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
人教/中圖版(2019)第三章3.3.3開發(fā)網(wǎng)絡(luò)聊天系統(tǒng)使用網(wǎng)絡(luò)中的一些聊天室時(shí),只要在瀏覽器中輸入聊天室的網(wǎng)址,根據(jù)提示登錄后就可以聊天了。下面開發(fā)一個(gè)簡易的文字型網(wǎng)絡(luò)聊天系統(tǒng),這個(gè)系統(tǒng)的客戶端用瀏覽器來擔(dān)當(dāng)。要開發(fā)的信息系統(tǒng)功能很簡單:客戶端負(fù)責(zé)發(fā)送、接收信息,服務(wù)器負(fù)責(zé)把收到的信息轉(zhuǎn)發(fā)給客戶端。明確系統(tǒng)結(jié)構(gòu)在本節(jié)的范例中,聊天系統(tǒng)將采用WebSocket協(xié)議進(jìn)行通信,絕大多數(shù)瀏覽器都已經(jīng)支持這種協(xié)議,因而開發(fā)過程相對簡單。如果需要,也可以采用其他協(xié)議進(jìn)行開發(fā)。明確系統(tǒng)結(jié)構(gòu)隨著瀏覽器的功能越來越強(qiáng),很多信息系統(tǒng)的客戶端都已借助瀏覽器來實(shí)現(xiàn),編寫客戶端軟件的過程類似于編寫網(wǎng)頁。通常,網(wǎng)頁本身由HTML代碼構(gòu)成。HTML是hypertextmarkuplanguage的縮寫,中文譯為“超文本標(biāo)記語言”。瀏覽網(wǎng)頁時(shí),瀏覽器軟件根據(jù)代碼進(jìn)行布局圖文、展示影像等操作。開發(fā)客戶端軟件項(xiàng)目實(shí)施編寫客戶端軟件1.明確客戶端軟件應(yīng)該具備的具體功能_連接服務(wù)器_輸入信息_發(fā)送信息_接收信息_顯示接收的信息2.參照下面的代碼,用HTML編寫或改寫網(wǎng)頁形式的客戶端項(xiàng)目實(shí)施<html>inputid='host'valve=127.0,0.1)</input>#服務(wù)器地<buttononc1ck-‘con()>連接</button><br/><br/><inputid=‘msg’></input>#輸入聊天信息<buttononclick-send()>發(fā)送</button><divid="output"></div><script>functioncon()#建立連接{ws=newwebsocket(ws://"+host.value+":8765/)項(xiàng)目實(shí)施ws,onopen=function(evt){writeToScreen("CONNECTED1)};Ws.onmessage-function(evt){writeToscreen(evt.data););}functionsend#發(fā)送信息{message=msg.value;Ws.send(message);f}functionwriteToscreen(message)#顯示信息項(xiàng)目實(shí)施{varpre=document.createElement(p);Pre.innerHTML-message;outputappendchild(pre);}</script></html>3.檢查代碼是否與書中一致,了解每段代碼的功能,然后以client.html為名保存起來前面編寫的網(wǎng)頁文件中,在<script>和</script>之間一段特殊的代碼,編寫這段代碼使用的是Javascript編程語言。這種語言可用來控制瀏覽器完成多種復(fù)雜操作。具體來說,瀏覽器解析網(wǎng)頁中的Javascrip代碼時(shí),就會(huì)采用WebSocket協(xié)議,連接服務(wù)器的8765端口.然后等待用戶發(fā)出信息或等待接收服務(wù)器轉(zhuǎn)發(fā)的信息。其中,定義變量ws的過程就是嘗試建立連接的過程。Ws.onmessge表示成功建立了通信連接,writeToScreen表示收到了從服務(wù)器傳來的消息,它們都調(diào)用writeToscreen方法把相關(guān)信息顯示在網(wǎng)頁上。代碼中的send方法用于發(fā)送消息。開發(fā)服務(wù)器和客戶墻軟件時(shí),常常會(huì)根據(jù)兩者不同的行環(huán)境,采用不同的語言。下面以Python為例做介紹。開發(fā)服務(wù)器軟件項(xiàng)目實(shí)施編寫服務(wù)器軟件1.明確聊天服務(wù)器的工作過程。服務(wù)器時(shí)刻不停地監(jiān)聽某個(gè)端口有信息傳來時(shí),就根信息做出相應(yīng)的處理:或建立網(wǎng)絡(luò)連接,或接收并轉(zhuǎn)發(fā)傳來的消息。2參照下面的代碼,編寫Phyon程序。#引入程庫Importwebsocketsimportasyncio#保存客戶端cs=set()項(xiàng)目實(shí)施asyncdeftalk(websocket,path);Try;whileTrue;if(notwebsocketincs)#新的訪問申請cs.add(websocket)msg=‘歡迎:‘+str(websocket.renote_address#新的聊天消息Else;Msg=str(websocket,remoteaddress)+’說’+str(awaitwebsocketrecv())項(xiàng)目實(shí)施awaitasyncio.wait(ws,send(msg)forwsincs])#轉(zhuǎn)發(fā)信息exceptExceptionaserr:cs.remove(websocket)#移除客戶端連接#監(jiān)聽8765口start_server=websockets.serve(talk,l’ocalhost’,8765)asyncio.geteventloop().run_untilcomplete(start_server)asyncio.geteventloop().run_forever()程序變量cs存放著所有連到服務(wù)器的客戶端連接。運(yùn)行時(shí),這個(gè)軟件會(huì)開放本地的8765端口,以Websocket協(xié)議提供網(wǎng)絡(luò)服務(wù),隨后所有的網(wǎng)絡(luò)通信都在talk方法中進(jìn)行處理。程序中的talk方法采用了無限循環(huán)的方式,不斷監(jiān)聽端口。如果有新的用戶連入,就保存通信連接井用類似“歡迎”的內(nèi)容通知其他用戶;如果是新的聊天消息,就在消息前面加上發(fā)信人的網(wǎng)絡(luò)地址,然后轉(zhuǎn)發(fā)給所有人編寫這個(gè)Python程序時(shí),引入了兩個(gè)重要的庫:一個(gè)是名為websockets的網(wǎng)絡(luò)庫,用于處理Websocket網(wǎng)絡(luò)協(xié)議,實(shí)現(xiàn)通信功能;一個(gè)是在服務(wù)器開發(fā)中經(jīng)常會(huì)使用的名為asyncio的標(biāo)準(zhǔn)庫,用于以異步模式處理信息。關(guān)于異步,后面會(huì)做簡單介紹。編寫好客戶端軟件和服務(wù)器軟件后,就可以把它們組合在一起,形成網(wǎng)絡(luò)聊天系統(tǒng)了。部署實(shí)施項(xiàng)目實(shí)施部署信息系統(tǒng)1.調(diào)試、運(yùn)行服務(wù)器軟件,確保翟序正常運(yùn)行2.用瀏覽器軟件打開網(wǎng)頁文件,試試能否正常訪問本地服務(wù)器3.小組內(nèi)運(yùn)行修改后的服務(wù)器軟件,并公布那臺(tái)計(jì)算機(jī)的網(wǎng)絡(luò)地址,然后同一網(wǎng)絡(luò)中的其他人用計(jì)算機(jī)連接公布的服務(wù)器,嘗試多人聊天。提示:start_server=websockets.serve(talk,'xxx.xxx.xxx.xxx,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年區(qū)塊鏈行業(yè)全球區(qū)塊鏈技術(shù)應(yīng)用與數(shù)字資產(chǎn)發(fā)展趨勢研究報(bào)告
- 彩泥社團(tuán)課件
- 2025年人工智能行業(yè)應(yīng)用趨勢與發(fā)展研究報(bào)告
- 2025年教育行業(yè)在線教育平臺(tái)發(fā)展與教學(xué)智能化趨勢研究報(bào)告
- 2025年食品飲料行業(yè)健康飲食消費(fèi)趨勢研究報(bào)告
- 生菜蔬菜知識(shí)培訓(xùn)課件
- 2025年汽車行業(yè)智能駕駛與電動(dòng)化趨勢研究報(bào)告
- 高考英語語法試題及答案
- 音樂知識(shí)競賽試題及精準(zhǔn)答案
- 2025年汽車行業(yè)電動(dòng)汽車技術(shù)前景分析報(bào)告
- 2025年醫(yī)院領(lǐng)導(dǎo)競聘面試題與參考答案
- 黑龍江省高等教育教學(xué)成果獎(jiǎng)申請書
- 2025中礦金石實(shí)業(yè)有限公司社會(huì)招聘備考考試題庫附答案解析
- 2025年屠檢考務(wù)試卷及答案
- (正式版)DB65∕T 4260-2019 《薰衣草優(yōu) 質(zhì)種苗組培快繁生產(chǎn)技術(shù)規(guī)程》
- 五金材料知識(shí)培訓(xùn)課件
- 23《富貴不能淫》(公開課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì))統(tǒng)編版語文八年級(jí)上冊
- 校園科技教育主題班會(huì)活動(dòng)方案
- 綠色食品認(rèn)證合同協(xié)議
- 七年級(jí)生物分組實(shí)驗(yàn)案例解析
- 筑夢青春強(qiáng)國有我+課件-2025-2026學(xué)年高二上學(xué)期國慶節(jié)主題班會(huì)
評論
0/150
提交評論