版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(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ā)過程相對(duì)簡單。如果需要,也可以采用其他協(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)#新的訪問申請(qǐng)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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年西安西北有色物化探總隊(duì)有限公司招聘備考題庫含答案詳解
- 養(yǎng)老院環(huán)境衛(wèi)生與消毒制度
- 2026年攀枝花市西區(qū)財(cái)政局關(guān)于面向社會(huì)公開招聘人員的備考題庫帶答案詳解
- 2026年石晶光電招聘23人備考題庫附答案詳解
- 2026年航天時(shí)代低空科技有限公司招聘行政人員勞務(wù)派遣崗位備考題庫及一套完整答案詳解
- 2026年雅安市人民醫(yī)院四川大學(xué)華西醫(yī)院雅安醫(yī)院 小兒外科、健康管理中心醫(yī)師招聘備考題庫及一套參考答案詳解
- 天津中醫(yī)藥大學(xué)第二附屬醫(yī)院2026年第一批公開招聘備考題庫(博士及高級(jí)職稱醫(yī)療人員)帶答案詳解
- 2026年蘇州交投鑫能交通科技有限公司公開招聘備考題庫及答案詳解1套
- 2026年橫琴粵澳深度合作區(qū)首都師范大學(xué)子期實(shí)驗(yàn)小學(xué)招聘備考題庫參考答案詳解
- 2026年部分大??蓤?bào)不限專業(yè)武漢大學(xué)人民醫(yī)院招聘7人備考題庫含答案詳解
- 安徽省九師聯(lián)盟2025-2026學(xué)年高三(1月)第五次質(zhì)量檢測英語(含答案)
- 企業(yè)素質(zhì)提升管理制度
- 制劑室教育培訓(xùn)管理制度
- 2025至2030中國工業(yè)軟件行業(yè)發(fā)展分析及有效策略與實(shí)施路徑評(píng)估報(bào)告
- 2023年安徽省公務(wù)員錄用考試《專業(yè)科目-財(cái)會(huì)類》真題及答案
- 四川省成都市2023-2024學(xué)年高二上學(xué)期期末考試英語試題 含解析
- T-CCUA 006-2024 信息系統(tǒng)審計(jì)機(jī)構(gòu)服務(wù)能力評(píng)價(jià)
- 魯科版高中化學(xué)選擇性必修第一冊(cè)第2章章末復(fù)習(xí)建構(gòu)課課件
- DL∕T 5210.6-2019 電力建設(shè)施工質(zhì)量驗(yàn)收規(guī)程 第6部分:調(diào)整試驗(yàn)
- 2024年安徽省高考地理試卷(真題+答案)
- 裝修民事糾紛調(diào)解協(xié)議書
評(píng)論
0/150
提交評(píng)論