LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

Android 開發(fā)即時聊天工具 YQ :(四) 獲取好友列表

admin
2013年2月25日 14:23 本文熱度 4590

Android 開發(fā)即時聊天工具 YQ :(三) 實現(xiàn)登陸功能中已經(jīng)實現(xiàn)了登陸功能,離能聊天又近了一步了 :)


在實現(xiàn)聊天之前還有一個重要的東西,?沒錯,就是好友列表,沒的好友你和誰聊呀,是吧,


嘿嘿,一切從簡,早點實現(xiàn)基本的聊天目標的說,所以代碼很懶(or 爛?),為什么呢?看完就知道了,


在服務(wù)器端當?shù)顷懗晒螅麻_一個線程,用來服務(wù)器和該賬號通信,這樣服務(wù)器端就可以處理別的登陸請求了,





[java]


  1. if(u.getOperation().equals("login")){ //登錄   

  2.                 int account=u.getAccount();  

  3.                 boolean b=new UserDao().login(account, u.getPassword());//連接數(shù)據(jù)庫驗證用戶   

  4.                 if(b){  

  5.                     System.out.println(MyData.getDate()+"'"+account+"' 上線了!");  

  6.                     m.setType(YQMessageType.SUCCESS);//返回一個成功登陸的信息包   

  7.                     oos.writeObject(m);  

  8.                     ServerConClientThread cct=new ServerConClientThread(s);//單開一個線程,讓該線程與該客戶端保持連接   

  9.                     ManageServerConClient.addClientThread(u.getAccount(),cct);  

  10.                     cct.start();//啟動與該客戶端通信的線程   

  11.                 }else{  

  12.                     m.setType(YQMessageType.FAIL);  

  13.                     oos.writeObject(m);  

  14.                 }  

  15.             }else if(u.getOperation().equals("register")){  

  16.                 //注冊   

  17.             }  
服務(wù)器和某個客戶端通信的線程:




[java]


  1. public class ServerConClientThread extends Thread {  

  2.     Socket s;  

  3.     public ServerConClientThread(Socket s){  

  4.         this.s=s;  

  5.     }  

  6.   

  7.     public void run() {  

  8.         while(true){  

  9.             ObjectInputStream ois = null;  

  10.             YQMessage m = null;  

  11.             try {  

  12.                 ois=new ObjectInputStream(s.getInputStream());  

  13.                 m=(YQMessage) ois.readObject();  

  14.                 //對從客戶端取得的消息進行類型判斷,做相應(yīng)的處理   

  15.                 if(m.getType().equals(YQMessageType.COM_MES)){//如果是普通消息包   

  16.                     //取得接收人的通信線程   

  17.                     ServerConClientThread scc=ManageServerConClient.getClientThread(m.getReceiver());  

  18.                     ObjectOutputStream oos=new ObjectOutputStream(scc.s.getOutputStream());  

  19.                     //向接收人發(fā)送消息   

  20.                     oos.writeObject(m);  

  21.                 }else if(m.getType().equals(YQMessageType.GET_ONLINE_FRIENDS)){//如果是請求好友列表   

  22.                     //操作數(shù)據(jù)庫,這里返回的是所有的用戶列表,先留著坑,以后填,增加好友   

  23.                     //暫時將結(jié)果揉成string類型,以后可以改為json   

  24.                     String res=new UserDao().getUser();  

  25.                     //發(fā)送好友列表到客戶端   

  26.                     ServerConClientThread scc=ManageServerConClient.getClientThread(m.getSender());  

  27.                     ObjectOutputStream oos=new ObjectOutputStream(scc.s.getOutputStream());  

  28.                     YQMessage ms=new YQMessage();  

  29.                     ms.setType(YQMessageType.RET_ONLINE_FRIENDS);  

  30.                     ms.setContent(res);  

  31.                     oos.writeObject(ms);  

  32.                 }  

  33.             } catch (Exception e) {  

  34.                 e.printStackTrace();  

  35.                 try {  

  36.                     s.close();  

  37.                     ois.close();  

  38.                 } catch (IOException e1) {  

  39.                       

  40.                 }  

  41.             }  

  42.         }  

  43.     }  

  44. }  
可以看到已經(jīng)有了處理請求好友列表的代碼了,現(xiàn)在知道為什么說代碼寫的爛了吧,哈哈,


在客戶端中,與上面類似:





[java]


  1. if(ms.getType().equals(YQMessageType.SUCCESS)){  

  2.                 //創(chuàng)建一個該賬號和服務(wù)器保持連接的線程   

  3.                 ClientConServerThread ccst=new ClientConServerThread(context,s);  

  4.                 //啟動該通信線程   

  5.                 ccst.start();  

  6.                 //加入到管理類中   

  7.                 ManageClientConServer.addClientConServerThread(((User)obj).getAccount(), ccst);  

  8.                 b=true;  

  9.             }else if(ms.getType().equals(YQMessageType.FAIL)){  

  10.                 b=false;  

  11.             }  

將客戶端連接服務(wù)器的線程為什么要加到ManageClientServer這個類中,就是方便隨時可以得到ObjectOutputStream對象,以便想服務(wù)器發(fā)送數(shù)據(jù),當然也可以寫一個專門發(fā)送數(shù)據(jù)的線程。



在客戶端登陸成功后,向服務(wù)器發(fā)送一個請求好友列表的包:





[java]


  1. //發(fā)送一個要求返回在線好友的請求的Message   

  2.                 ObjectOutputStream oos = new ObjectOutputStream (  

  3.                         ManageClientConServer.getClientConServerThread(user.getAccount()).getS().getOutputStream());  

  4.                 YQMessage m=new YQMessage();  

  5.                 m.setType(YQMessageType.GET_ONLINE_FRIENDS);  

  6.                 m.setSender(user.getAccount());  

  7.                 oos.writeObject(m);  




在得到好友列表后,顯示到好友列表中就OK,listView 和adapter種種,就不詳細說了,


完成后效果如圖:






話說安卓模擬器永遠是3G信號,永遠在充電,,,,


該文章在 2013/2/25 14:23:21 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
日本免费A在线 | 亚洲理论在线a中文字幕 | 日本高清在线卡一卡二中文字幕 | 夜夜夜夜夜国产区 | 亚洲AV成人无遮挡网站在线观看 | 亚洲国产精品久久久久久久 |