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

您的位置:首頁技術(shù)文章
文章詳情頁

基于JAVA的ICQ系統(tǒng)的設(shè)計(jì)于實(shí)現(xiàn)

瀏覽:12日期:2024-06-22 11:51:56
內(nèi)容: 出自:www.ibm.com.cn 何剛 2002年10月09日 23:01 分析ICQ系統(tǒng),并嘗試用Java編寫。一.序言 ICQ是英文'I seek you '的簡(jiǎn)稱,中文意思是我找你。ICQ最大的功能就是即時(shí)信息交流 ,只要記得對(duì)方的號(hào)碼,上網(wǎng)時(shí)可以呼他,無論他在哪里,只要他上網(wǎng)打開ICQ,人們就 可以隨時(shí)交流。ICQ源于以色列特拉維夫的Mirabils公司。該公司成立于1996年7月, 也就是在這個(gè)時(shí)候,互聯(lián)網(wǎng)上最出名,下載使用人數(shù)最多的免費(fèi)軟件ICQ誕生了。可能是 其不斷增加的用戶和廣闊的前景以及廣泛的應(yīng)用前景和巨大的市場(chǎng)潛力,Mirabils的ICQ最 終被美國在線AOL收購。由于ICQ的成功,推動(dòng)了ICQ的本土化,就中文的ICQ而言,現(xiàn)在已經(jīng)越來越多,比如著名的深圳騰迅公司推出的OICQ(現(xiàn)在由于版權(quán)問題,已改名為QQ2001),還有由TOM.COM推出的Tomq等,這些軟件技術(shù)都很好,而且簡(jiǎn)單易用,成為 中國網(wǎng)民最喜歡的通信軟件。但是這些公司都只提供軟件的客戶端程序免費(fèi)下載,而不提供其服務(wù)器程序,因此對(duì)于未與互聯(lián)網(wǎng)連接的私有網(wǎng)絡(luò),這些軟件就用不上了。當(dāng)然網(wǎng)上也有免費(fèi)的類似ICQ的服務(wù)器提供下載,但是好多都不提供源程序,即使有,其說明也很簡(jiǎn)單,我很想知道它是怎么回事,所以我就試著做了。二.設(shè)計(jì)1.為什么選擇JAVA? Java是Sun Microsystem公司的James Gosling開發(fā)的編程語言。它以C++為基礎(chǔ),但是卻是一個(gè)全新的軟件開發(fā)語言。Java是一個(gè)簡(jiǎn)單,面象對(duì)象,分布式,解釋性,強(qiáng)壯,安全,與系統(tǒng)無關(guān),可移植,高性能,多線程和動(dòng)態(tài)的語言-------這是 Sun給Java的定義。Sun公司的口號(hào)就是'網(wǎng)絡(luò)就是計(jì)算機(jī)',Java能使所有東西從桌面計(jì)算平穩(wěn)的轉(zhuǎn)變?yōu)榛诰W(wǎng)絡(luò)的計(jì)算,它是專門為此而建立的,并顯然是為了完成這個(gè)任務(wù)而來的。使用Java,我們可以相對(duì)輕松的一天編寫一個(gè)有條理的網(wǎng)絡(luò)程序。今天,Java的網(wǎng)絡(luò)功能正在飛躍發(fā)展,不斷有新的特性增加到這個(gè)有價(jià)值的基礎(chǔ)上,JavaSoft實(shí)驗(yàn)室正在不斷努力使Java更加完善。2.?dāng)?shù)據(jù)庫設(shè)計(jì) 系統(tǒng)可以采用任何一種流行的,Java支持的數(shù)據(jù)庫,本系統(tǒng)采用了Microsoft公司的SQL Server2000作為后臺(tái)數(shù)據(jù)庫。通過對(duì)現(xiàn)在流行的一些Icq的參考,建立數(shù)據(jù)庫,名為javaicq,數(shù)據(jù)庫共建立兩個(gè)表,一個(gè)是用戶的基本信息,包括呢稱,Jicq號(hào)碼等。一個(gè)是用戶的好友表,包括用戶自己的號(hào)碼和好友的號(hào)碼。(1)用戶的基本信息表(表名icq) 序號(hào) 字段名 含義 數(shù)據(jù)類型 NULL 1 Icqno 用戶的號(hào)碼 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 用戶的頭像號(hào) Int Yes 8 Sex 用戶性別 Char Yes 9 Email 用戶的email Char Yes 10 Place 用戶的籍貫 Char yes 其中Icqno字段為自動(dòng)增加。(其他還可以添加諸如電話號(hào)碼等字段作為更多選擇)(2)用戶的好友表(表名friend) 序號(hào) 字段名 含義 數(shù)據(jù)類型 NULL 1 Icqno 用戶的號(hào)碼 Int No 2 Friend 好友的號(hào)碼 Int No 3. 系統(tǒng)模式及程序(具體程序參看源程序) 系統(tǒng)采用客戶/服務(wù)器摸式(如圖)服務(wù)器程序: 服務(wù)器與客戶間通過套接口Socket(TCP)連接。在java中使用套接口相當(dāng)簡(jiǎn)單,Java API為處理套接口的通信提供了一個(gè)類java.net.Socket.,使得編寫網(wǎng)絡(luò)應(yīng)用程序相對(duì)容易.服務(wù)器采用多線程以滿足多用戶的請(qǐng)求,通過JDBC與后臺(tái)數(shù)據(jù)庫連接,并通過創(chuàng)建一個(gè)ServerSocket對(duì)象來監(jiān)聽來自客戶的連接請(qǐng)求,默認(rèn)端口為8080,然后無限循環(huán)調(diào)用accept()方法接受客戶程序的連接服務(wù)器程序代碼如下:(部分) 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;//定義申請(qǐng)的jicq號(hào)碼public ServerThread(Socket s) throws IOException {//線程構(gòu)造函數(shù)socket=s;//取得傳遞參數(shù)in=new BufferedReader(new InputStreamReader(socket.getInputStream()));//創(chuàng)建輸入流out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);//創(chuàng)建輸出流start();//啟動(dòng)線程}public void run(){//線程監(jiān)聽函數(shù)try{ while(true){String str=in.readLine();//取得輸入字符串if(str.equals('end'))break;//如果是結(jié)束就關(guān)閉連接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//登錄結(jié)束//以下為處理客戶的新建請(qǐng)求else if(strout.println(no);out.println('ok');c2.close();//完畢}catch (Exception e){e.printStackTrace();out.println('false');}socket.close();}//end new//新建用戶結(jié)束//以下處理用戶查找好友else if(str//while endout.println('over');////////GET ICQNOint d,x;boolean y;//以下返回用戶的jicq號(hào)碼,頭像號(hào),及是否在線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//查找好友結(jié)束//以下處理用戶登錄時(shí)讀取其好友資料else if(str//read friend info//以下告訴客戶其好友的呢稱,號(hào)碼,ip地址,狀態(tài),頭像,個(gè)人資料等信息out.println(friendno.size());for(int i=0;i
標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 欧美一级毛片免费大片 | 一区 在线播放 | 高清国产美女一级a毛片录 高清国产亚洲va精品 | 免费的三级网站 | 久久精品道一区二区三区 | 91久久国产综合精品女同我 | 亚洲一区二区三区不卡视频 | 国产高清自拍视频 | 一级成人a做片免费 | 成人午夜大片免费7777 | 在线免费黄网 | a级毛片免费在线观看 | 国产成人精品在线 | 国产在线精品一区二区不卡 | 亚洲午夜成激人情在线影院 | 国产大臿蕉香蕉大视频女 | 亚洲国产欧美目韩成人综合 | 欧美在线视频免费观看 | 国产亚洲精 | 色综合久久88一加勒比 | 久久99亚洲精品久久频 | 国产a毛片| 日韩精品一级a毛片 | 国产一区二 | 黄频漫画 | 国产在线观看一区二区三区 | 色欲麻豆国产福利精品 | 91年精品国产福利线观看久久 | 全部在线美女网站免费观看 | 亚洲精品91| 欧美日韩国产58香蕉在线视频 | 国产精品视频一区二区三区 | 亚洲男同视频网站 | 亚洲另类激情综合偷自拍图 | 亚洲精品欧洲一区二区三区 | 欧美成人性色大片在线观看 | 99视频在线观看高清 | 性盈盈影院在线观看 | 欧美特黄一级高清免费的香蕉 | 萌白酱福利视频 | 操操网站 |