色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

基于JAVA的ICQ系統的設計于實現

瀏覽:2日期:2024-06-22 11:51:56
內容: 出自:www.ibm.com.cn 何剛 2002年10月09日 23:01 分析ICQ系統,并嘗試用Java編寫。一.序言 ICQ是英文'I seek you '的簡稱,中文意思是我找你。ICQ最大的功能就是即時信息交流 ,只要記得對方的號碼,上網時可以呼他,無論他在哪里,只要他上網打開ICQ,人們就 可以隨時交流。ICQ源于以色列特拉維夫的Mirabils公司。該公司成立于1996年7月, 也就是在這個時候,互聯網上最出名,下載使用人數最多的免費軟件ICQ誕生了。可能是 其不斷增加的用戶和廣闊的前景以及廣泛的應用前景和巨大的市場潛力,Mirabils的ICQ最 終被美國在線AOL收購。由于ICQ的成功,推動了ICQ的本土化,就中文的ICQ而言,現在已經越來越多,比如著名的深圳騰迅公司推出的OICQ(現在由于版權問題,已改名為QQ2001),還有由TOM.COM推出的Tomq等,這些軟件技術都很好,而且簡單易用,成為 中國網民最喜歡的通信軟件。但是這些公司都只提供軟件的客戶端程序免費下載,而不提供其服務器程序,因此對于未與互聯網連接的私有網絡,這些軟件就用不上了。當然網上也有免費的類似ICQ的服務器提供下載,但是好多都不提供源程序,即使有,其說明也很簡單,我很想知道它是怎么回事,所以我就試著做了。二.設計1.為什么選擇JAVA? Java是Sun Microsystem公司的James Gosling開發的編程語言。它以C++為基礎,但是卻是一個全新的軟件開發語言。Java是一個簡單,面象對象,分布式,解釋性,強壯,安全,與系統無關,可移植,高性能,多線程和動態的語言-------這是 Sun給Java的定義。Sun公司的口號就是'網絡就是計算機',Java能使所有東西從桌面計算平穩的轉變為基于網絡的計算,它是專門為此而建立的,并顯然是為了完成這個任務而來的。使用Java,我們可以相對輕松的一天編寫一個有條理的網絡程序。今天,Java的網絡功能正在飛躍發展,不斷有新的特性增加到這個有價值的基礎上,JavaSoft實驗室正在不斷努力使Java更加完善。2.數據庫設計 系統可以采用任何一種流行的,Java支持的數據庫,本系統采用了Microsoft公司的SQL Server2000作為后臺數據庫。通過對現在流行的一些Icq的參考,建立數據庫,名為javaicq,數據庫共建立兩個表,一個是用戶的基本信息,包括呢稱,Jicq號碼等。一個是用戶的好友表,包括用戶自己的號碼和好友的號碼。(1)用戶的基本信息表(表名icq) 序號 字段名 含義 數據類型 NULL 1 Icqno 用戶的號碼 Int No 2 Nickname 用戶的呢稱 Char No 3 Password 用戶的密碼 Char No 4 Status 用戶在線否 Bit No 5 Ip 用戶的IP地址 Char Yes 6 Info 用戶的資料 Varchar Yes 7 Pic 用戶的頭像號 Int Yes 8 Sex 用戶性別 Char Yes 9 Email 用戶的email Char Yes 10 Place 用戶的籍貫 Char yes 其中Icqno字段為自動增加。(其他還可以添加諸如電話號碼等字段作為更多選擇)(2)用戶的好友表(表名friend) 序號 字段名 含義 數據類型 NULL 1 Icqno 用戶的號碼 Int No 2 Friend 好友的號碼 Int No 3. 系統模式及程序(具體程序參看源程序) 系統采用客戶/服務器摸式(如圖)服務器程序: 服務器與客戶間通過套接口Socket(TCP)連接。在java中使用套接口相當簡單,Java API為處理套接口的通信提供了一個類java.net.Socket.,使得編寫網絡應用程序相對容易.服務器采用多線程以滿足多用戶的請求,通過JDBC與后臺數據庫連接,并通過創建一個ServerSocket對象來監聽來自客戶的連接請求,默認端口為8080,然后無限循環調用accept()方法接受客戶程序的連接服務器程序代碼如下:(部分) import java.io.*;import java.net.*;import java.sql.*;import java.util.Vector;class ServerThread extends Thread{//繼承線程private Socket socket;//定義套接口private BufferedReader in;//定義輸入流private PrintWriter out;//定義輸出流int no;//定義申請的jicq號碼public ServerThread(Socket s) throws IOException {//線程構造函數socket=s;//取得傳遞參數in=new BufferedReader(new InputStreamReader(socket.getInputStream()));//創建輸入流out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);//創建輸出流start();//啟動線程}public void run(){//線程監聽函數try{ while(true){String str=in.readLine();//取得輸入字符串if(str.equals('end'))break;//如果是結束就關閉連接else if(str//否者告訴客戶失敗else out.println('false');r.close();c.close();}else{ out.println('false');System.out.println('false');r.close();c.close();}}catch (Exception e){e.printStackTrace();}socket.close();}//end login//登錄結束//以下為處理客戶的新建請求else if(strout.println(no);out.println('ok');c2.close();//完畢}catch (Exception e){e.printStackTrace();out.println('false');}socket.close();}//end new//新建用戶結束//以下處理用戶查找好友else if(str//while endout.println('over');////////GET ICQNOint d,x;boolean y;//以下返回用戶的jicq號碼,頭像號,及是否在線ResultSet iset=st.executeQuery('select icqno,pic,status from icq');while(isetelse {out.println('0');}//System.out.println(d);}// end send jicqnoiset.close();/////////icqno endc3.close();result.close();}catch (Exception e){e.printStackTrace();System.out.println('false');}//socket.close();}//end find//查找好友結束//以下處理用戶登錄時讀取其好友資料else if(str//read friend info//以下告訴客戶其好友的呢稱,號碼,ip地址,狀態,頭像,個人資料等信息out.println(friendno.size());for(int i=0;i
標簽: Java
相關文章:
主站蜘蛛池模板: 三级国产在线观看 | 欧美一级精品高清在线观看 | 亚洲免费网站在线观看 | 手机看片自拍自自拍日韩免费 | 国产亚洲精品hd网站 | 小屁孩cao大人免费网站 | 久久亚洲国产的中文 | 黄色美女视频免费 | 欧美a级在线观看 | 亚洲国产精品自产拍在线播放 | 国产爽的冒白浆的视频高清 | 日本一区二区三区四区无限 | 狠狠色婷婷丁香综合久久韩国 | 国产免费自拍 | 久久免费观看视频 | 日韩欧美一及在线播放 | 中文字幕日韩精品中文区 | 国产午夜视频 | 99久久精品国产免看国产一区 | 欧美一级片在线看 | 欧美视频在线观看 | 久久免费视频在线观看30 | 国产成人丝袜视频在线视频 | 草草在线免费视频 | 久久久久久久久免费影院 | 这里只有精品国产 | 日韩性网站 | 一级毛片在线 | 国语自产拍天天在线 | 亚洲一区 中文字幕 久久 | 亚洲狠狠综合久久 | 免费欧洲毛片a级视频无风险 | 国产三级视频在线 | 三级网站在线 | 一色屋精品亚洲香蕉网站 | 欧美成人怡红院在线观看 | 成人精品视频在线观看播放 | 久草视频网站 | 欧美jizzhd极品欧美 | 成人性一级视频在线观看 | 欧美 亚洲 丝袜 清纯 中文 |