3.3.3開發(fā)網(wǎng)絡(luò)聊天系統(tǒng)-人教版高中信息技術(shù)必修二 課件_第1頁
3.3.3開發(fā)網(wǎng)絡(luò)聊天系統(tǒng)-人教版高中信息技術(shù)必修二 課件_第2頁
3.3.3開發(fā)網(wǎng)絡(luò)聊天系統(tǒng)-人教版高中信息技術(shù)必修二 課件_第3頁
3.3.3開發(fā)網(wǎng)絡(luò)聊天系統(tǒng)-人教版高中信息技術(shù)必修二 課件_第4頁
3.3.3開發(fā)網(wǎng)絡(luò)聊天系統(tǒng)-人教版高中信息技術(shù)必修二 課件_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

人教/中圖版(2019)第三章3.3.3開發(fā)網(wǎng)絡(luò)聊天系統(tǒng)使用網(wǎng)絡(luò)中的一些聊天室時,只要在瀏覽器中輸入聊天室的網(wǎng)址,根據(jù)提示登錄后就可以聊天了。下面開發(fā)一個簡易的文字型網(wǎng)絡(luò)聊天系統(tǒng),這個系統(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)的客戶端都已借助瀏覽器來實現(xiàn),編寫客戶端軟件的過程類似于編寫網(wǎng)頁。通常,網(wǎng)頁本身由HTML代碼構(gòu)成。HTML是hypertextmarkuplanguage的縮寫,中文譯為“超文本標(biāo)記語言”。瀏覽網(wǎng)頁時,瀏覽器軟件根據(jù)代碼進(jìn)行布局圖文、展示影像等操作。開發(fā)客戶端軟件項目實施編寫客戶端軟件1.明確客戶端軟件應(yīng)該具備的具體功能_連接服務(wù)器_輸入信息_發(fā)送信息_接收信息_顯示接收的信息2.參照下面的代碼,用HTML編寫或改寫網(wǎng)頁形式的客戶端項目實施<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/)項目實施ws,onopen=function(evt){writeToScreen("CONNECTED1)};Ws.onmessage-function(evt){writeToscreen(evt.data););}functionsend#發(fā)送信息{message=msg.value;Ws.send(message);f}functionwriteToscreen(message)#顯示信息項目實施{varpre=document.createElement(p);Pre.innerHTML-message;outputappendchild(pre);}</script></html>3.檢查代碼是否與書中一致,了解每段代碼的功能,然后以client.html為名保存起來前面編寫的網(wǎng)頁文件中,在<script>和</script>之間一段特殊的代碼,編寫這段代碼使用的是Javascript編程語言。這種語言可用來控制瀏覽器完成多種復(fù)雜操作。具體來說,瀏覽器解析網(wǎng)頁中的Javascrip代碼時,就會采用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ù)器和客戶墻軟件時,常常會根據(jù)兩者不同的行環(huán)境,采用不同的語言。下面以Python為例做介紹。開發(fā)服務(wù)器軟件項目實施編寫服務(wù)器軟件1.明確聊天服務(wù)器的工作過程。服務(wù)器時刻不停地監(jiān)聽某個端口有信息傳來時,就根信息做出相應(yīng)的處理:或建立網(wǎng)絡(luò)連接,或接收并轉(zhuǎn)發(fā)傳來的消息。2參照下面的代碼,編寫Phyon程序。#引入程庫Importwebsocketsimportasyncio#保存客戶端cs=set()項目實施asyncdeftalk(websocket,path);Try;whileTrue;if(notwebsocketincs)#新的訪問申請cs.add(websocket)msg=‘歡迎:‘+str(websocket.renote_address#新的聊天消息Else;Msg=str(websocket,remoteaddress)+’說’+str(awaitwebsocketrecv())項目實施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)行時,這個軟件會開放本地的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ā)給所有人編寫這個Python程序時,引入了兩個重要的庫:一個是名為websockets的網(wǎng)絡(luò)庫,用于處理Websocket網(wǎng)絡(luò)協(xié)議,實現(xiàn)通信功能;一個是在服務(wù)器開發(fā)中經(jīng)常會使用的名為asyncio的標(biāo)準(zhǔn)庫,用于以異步模式處理信息。關(guān)于異步,后面會做簡單介紹。編寫好客戶端軟件和服務(wù)器軟件后,就可以把它們組合在一起,形成網(wǎng)絡(luò)聊天系統(tǒng)了。部署實施項目實施部署信息系統(tǒng)1.調(diào)試、運(yùn)行服務(wù)器軟件,確保翟序正常運(yùn)行2.用瀏覽器軟件打開網(wǎng)頁文件,試試能否正常訪問本地服務(wù)器3.小組內(nèi)運(yùn)行修改后的服務(wù)器軟件,并公布那臺計算機(jī)的網(wǎng)絡(luò)地址,然后同一網(wǎng)絡(luò)中的其他人用計算機(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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論