freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

java編寫qq聊天系統(tǒng)指導(dǎo)書-資料下載頁

2025-05-13 22:29本頁面
  

【正文】 an()。 msgBean=(str)。 String clientIP=()。 String clientPort=()。 String userName=()。 ClientInfo clientInfo=new ClientInfo()。 (clientSocket)。 (clientIP)。 (clientPort)。 (userName)。 //如果為新對象時,將這個對象放在集合中 (clientInfo)。 (集合中的個數(shù)==+())。 (這是+userName+新客戶在登錄!)。 //因為為新對象,還得將這個對象發(fā)給已在線的老客戶。 sendNewToOld(clientInfo,msgBean)。 //因為為新對象,還得將老對象發(fā)給它。 sendOldToNew(clientInfo)。 F任務(wù)十六:將新對象發(fā)給已在線的老客戶,并在老客戶的下拉列表中出現(xiàn)。如何將新對象發(fā)給已在線的老客戶。思路是,把新對象與集合中的對象一一比較,如果不相同,就把這個客戶端發(fā)過來的消息轉(zhuǎn)發(fā)過去,這樣就不會發(fā)回給自已。復(fù)習(xí)從集合中將對象一個個取出來 Iterator iter=()。 while(()){ ClientInfo clientInfoOld=(ClientInfo)()。 public void sendNewToOld(ClientInfo clientInfo, MessageBean msgBean){ Iterator iter=()。 while(()){ ClientInfo clientInfoOld=(ClientInfo)()。 if(clientInfo!=clientInfoOld){ try {OutputStream ops=().getOutputStream()。 DataOutputStream dos=new DataOutputStream(ops)。 String str=(msgBean)。 (str=+str)。 (str)。 } catch (IOException e) { // TODO Autogenerated catch block ()。 } } }消息從服務(wù)器端發(fā)到客戶端,那么客戶端就要做好接收數(shù)據(jù)的準(zhǔn)備。class AcceptMessageThread implements Runnable{ public void run() { try { InputStream ins=()。 DataInputStream dis=new DataInputStream(ins)。 while(true){ String str=()。 MessageBean msgBean=new MessageBean()。 msgBean=(str)。 String head=()。 if(NEW.equals(head)){ (這是老客戶端,接收來自新客戶的資料:+str)。 }else if(OLD.equals(head)){ (這是新客戶端,接收來自老客戶的資料:+str)。 } } } catch (IOException e) { // TODO Autogenerated catch block ()。 } } }如何將老客戶端對象發(fā)給新客戶端呢? public void sendOldToNew(ClientInfo clientInfo){ Iterator iter=()。 while(()){ ClientInfo clientInfoOld=(ClientInfo)()。 if(clientInfo!=clientInfoOld){ try { OutputStream ops=().getOutputStream()。 DataOutputStream dos=new DataOutputStream(ops)。 String head=OLD。 String ip=()。 String port=()。 String userName=()。 MessageBean msgBean=new MessageBean()。 (head)。 (ip)。 (port)。 (userName)。 String str=(msgBean)。 (str=+str)。 (str)。 } catch (IOException e) { // TODO Autogenerated catch block ()。 } } 總結(jié): 新用戶在登錄時,做了三件事,將新用戶對象保存在集合中,將新對象資料發(fā)送給老用戶,將老用戶資料發(fā)送給新用戶,并且在下拉列表中顯示出來。例如我們測試了四個用戶登錄,某個用戶的下拉列表中將要出現(xiàn)其它三人用戶,如圖110所示。 當(dāng)客戶端要接收數(shù)據(jù)時,就要在程序中加一個線程專門用來接受信息。 理解JavaBean使用,以及方法的調(diào)用與設(shè)計。圖110代碼詳細(xì)解答:如何將新對象信息發(fā)給老用戶?調(diào)用了一個自已寫的方法完成。95行。方法sendNewToOld1()。代碼如下:消息已經(jīng)從服務(wù)器發(fā)向了客戶端,那么客戶端就要做好接收的準(zhǔn)備,要寫一個線程來接受數(shù)據(jù),如下圖中定義了一個線程類。在login()方法中啟用這個線程,具體邏輯在下圖中的76行。如何將接收的數(shù)據(jù)添加到了下拉列表中?具體邏輯在下圖中的108行。對應(yīng)下圖的代碼2123行。F任務(wù)十七:將老用戶對象發(fā)給新用戶,并在下拉列表中顯示出來。如何將老用戶對象發(fā)給新用戶,并在下拉列表中顯示出來?在服務(wù)器端調(diào)用自已寫的方法,如下圖中的97行。sendOldToNew(…)代碼如下圖所示:注意127行,由服務(wù)器發(fā)給客戶端時,加了頭消息為”O(jiān)ld”。那么在客戶端如何處理這個信息的呢?客戶端就在下圖中的109行加上了一個if分支語句來處理這個信息。通過輸出語句進(jìn)行測試,結(jié)果如下:F任務(wù)十八:客戶端實現(xiàn)群聊??蛻舳酥g如何聊天?客戶端在聊天時,有兩種方式,一種是群聊,即選擇了ALL,那么消息就會發(fā)送給所有在線的其它客戶,第二種就是單聊,選中某個客戶,消息就發(fā)送給某個客戶。群聊是如何實現(xiàn)的呢?發(fā)送的消息是“ALL/”+自已的IP+”/”+自已的Port+“/”+自已的用戶名+“/”+發(fā)送框中的消息。在服務(wù)器中,如果接受到的信息是以ALL開頭的消息,則到集合中找到所有對象(除本人),一一發(fā)送消息給非本人以外的所有對象。①()方法中發(fā)出消息:如下圖中189187行,當(dāng)客戶端選擇了“ALL”,就向服務(wù)器端發(fā)出190行所示的信息②,接受到這個數(shù)據(jù)后做了處理:如下圖中111行調(diào)用了自已寫的方法sendMsgToAll1(…)方法;③sendMsgToAll1(…)方法內(nèi)容如下圖所示::④由服務(wù)器向客戶端發(fā)出了消息,那么客戶端是如何處理的呢?因為消息是原封不動的返回去的,所以頭消息為ALL,在接受線程中加一個分支進(jìn)行處理,如下圖中的302行到307行所示。F任務(wù)十八:客戶端實現(xiàn)單聊。單聊時發(fā)送的消息可以定義為:MSG+/+接受方IP+/+接受方Port+/+發(fā)送方用戶名+/+發(fā)送框內(nèi)容。因為下拉列表只有兩種可能,除了選擇ALL就是選擇某個客戶,所以在else語句中,就是實現(xiàn)單聊的開始,具體發(fā)送的內(nèi)容如下圖中214219行所示。并于103行調(diào)用自已寫的方法sendMsgToOne(…);sendMsgToOne(…)方法如下圖所示:消息發(fā)送給了客戶端,客戶端接受數(shù)據(jù)線程做了如下圖所示的處理。上圖中300行的setReceiveMsg():F任務(wù)十九:客戶端的下線。具體操作:()方法中,在退出前向服務(wù)器發(fā)出一條以QUT為頭消息的信息,如下圖所示:,做了如下圖所示處理,并在118行調(diào)用了方法sendQuit(…);sendQuit()方法如下圖所示:在客戶端接收這條消息后做如下圖所示處理,下圖中320行g(shù)etChoice()。getChoice()方法如下圖表示:public Choice getChoice(){ return clientList。 }實訓(xùn)內(nèi)容全部完成,學(xué)生將自已的作業(yè)逐個演示給教師看,教師給出成績??偨Y(jié):聊天系統(tǒng)是學(xué)生學(xué)習(xí)了JavaOO與JavaSE后的一個綜合性實訓(xùn),本人認(rèn)為這個項目非常有代表性,非常好。它是對Java基礎(chǔ)知識、流、線程、網(wǎng)絡(luò)編號進(jìn)行了全面復(fù)習(xí)及綜合運用。對學(xué)生來說,是個很好的提升機會,時間7天較為合適。本人將系統(tǒng)拆分為19個任務(wù),指導(dǎo)學(xué)生從易到難有梯度的完成。首先從網(wǎng)絡(luò)編程的教師與學(xué)生互發(fā)字節(jié)開始,慢慢的添加難度,到最后全面完成任務(wù)。教師在這個過程中一定要關(guān)注學(xué)生每個任務(wù)的完成情況,要有四分之三的人完成任務(wù)才能往后走,所以師生之間要多互動,教師要多關(guān)注與檢查學(xué)生情況,只有充分的了解學(xué)生并且不斷督促與幫助學(xué)生,才能讓學(xué)生完成項目,使學(xué)生產(chǎn)生成就感,從而樹立對專業(yè)的
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1