亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

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

2019-11-18 12:11:07
字體:
來源:轉載
供稿:網友

  分析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的服務器提供下載,但是好多都不提供源程序,即使有,其說明也很簡單,我很想知道它是怎么回事,所以我就試著做了。
  
  
  
  二.設計
  
  
  
 ?。保疄槭裁催x擇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字段為自動增加。(其他還可以添加諸如電話號碼等字段作為更多選擇)
  
  
  
 ?。?)用戶的好友表(表名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.equals("login")) {//假如是登錄
  
  try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//連接數據庫
  
  Connection c=DriverManager.getConnection("jdbc:odbc:javaicq"," "," ");
  
  String sql="select nickname,password from icq where icqno=?";
  
  //預備從數據庫選擇呢稱和密碼
  
  PreparedStatement prepare=c.prepareCall(sql);//設定數據庫查尋條件
  
  String icqno=in.readLine();
  
  int g=Integer.parseInt(icqno);//取得輸入的jicq號碼
  
  System.out.println(icqno);
  
  String passwd=in.readLine().trim();//取得輸入的密碼
  
  System.out.println(passwd);
  
  prepare.clearParameters();
  
  prepare.setInt(1,g);//設定參數
  
  ResultSet r=prepare.executeQuery();//執行數據庫查尋
  
  if(r.next()){//以下比較輸入的號碼于密碼是否相同
  
  String pass=r.getString("password").trim();
  
  System.out.println(pass);
  
  if(passwd.regionMatches(0,pass,0,pass.length()))
  
  { out.println("ok");
  
  //假如相同就告訴客戶ok
  
  //并且更新數據庫用戶為在線
  
  //以及注冊用戶的ip 地址
  
  //*************register ipaddress
  
  String setip="update icq set ip=? where icqno=?";
  
  PreparedStatement prest=c.prepareCall(setip);
  
  prest.clearParameters();
  
  prest.setString(1,socket.getInetAddress().getHostAddress());
  
  prest.setInt(2,g);
  
  int set=prest.executeUpdate();
  
  System.out.println(set);
  
  //*************ipaddress
  
  //set status online
  
  String status="update icq set status=1 where icqno=?";
  
  PreparedStatement prest2=c.prepareCall(status);
  
  prest2.clearParameters();
  
  prest2.setInt(1,g);
  
  int set2=prest2.executeUpdate();
  
  System.out.println(set2);
  
  //set online
  
  }
  
  //否者告訴客戶失敗
  
  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(str.equals("new")){
  
  try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//連接數據庫
  
  Connection c2=DriverManager.getConnection("jdbc:odbc:javaicq"," "," ");
  
  String newsql="insert into icq(nickname,password,email,info,place,pic) values(?,?,?,?,?,?)";
  
  //預備接受用戶的呢稱,密碼,email,個人資料,籍貫,頭像等信息
  
  PreparedStatement prepare2=c2.prepareCall(newsql);
  
  String nickname=in.readLine().trim();
  
  String password=in.readLine().trim();
  
  String email=in.readLine().trim();
  
  String info=in.readLine().trim();
  
  String place=in.readLine().trim();
  
  int picindex=Integer.parseInt(in.readLine());
  
  prepare2.clearParameters();
  
  prepare2.setString(1,nickname);
  
  prepare2.setString(2,password);
  
  prepare2.setString(3,email);
  
  prepare2.setString(4,info);
  
  prepare2.setString(5,place);
  
  prep

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧洲永久精品大片ww免费漫画| 亚洲精品91美女久久久久久久| 欧美国产在线电影| 久久视频免费在线播放| 亚洲色图校园春色| 国产不卡在线观看| 日韩在线视频导航| 国产精品久久色| 亚洲一区亚洲二区| 久久久噜久噜久久综合| 国产成人精品免费久久久久| 91亚洲精品视频| 国产精品麻豆va在线播放| 国产视频在线一区二区| 午夜精品久久久久久久久久久久| 日韩欧美国产成人| 国产视频久久网| 国a精品视频大全| 成人免费视频在线观看超级碰| 91国内精品久久| 国产视频观看一区| 欧美猛男性生活免费| 久热国产精品视频| 欧美黑人视频一区| 最近2019中文字幕第三页视频| 精品久久中文字幕久久av| 欧美三级免费观看| 81精品国产乱码久久久久久| 青草青草久热精品视频在线网站| 一色桃子一区二区| 日韩精品免费在线视频| 欧美日韩国产精品| 亚洲精品美女久久| 日韩经典一区二区三区| 亚洲欧美另类中文字幕| 日韩天堂在线视频| 国产精品白嫩美女在线观看| 在线观看日韩www视频免费| 亚洲永久在线观看| 欧美激情亚洲国产| 国产精品精品久久久久久| 久久久久www| 欧美午夜女人视频在线| 亚洲国产精品福利| 成人亚洲欧美一区二区三区| 久久资源免费视频| 国产一区二区三区在线视频| 国产精品综合网站| 精品动漫一区二区三区| 国产精品自拍偷拍| 国产精品久久久| 激情成人中文字幕| 国产日韩精品视频| 亚洲精品一区久久久久久| 亚洲精品视频在线播放| 久久久999精品视频| 亚洲精品日韩激情在线电影| 国产精品男女猛烈高潮激情| 久久视频免费在线播放| 日韩免费在线看| 成人黄色av网站| 国产精品视频26uuu| 亚洲国产天堂网精品网站| 狠狠躁18三区二区一区| 国产精品久久久久久久av大片| 亚洲天堂av在线免费| 国产精自产拍久久久久久蜜| 国产在线观看一区二区三区| 久久久久久九九九| 日韩av免费网站| 亚洲第一网站免费视频| 欧美极品在线播放| 性欧美亚洲xxxx乳在线观看| 国产美女精彩久久| 精品高清一区二区三区| 欧美日产国产成人免费图片| 亚洲在线免费看| 日韩午夜在线视频| 日韩av色在线| 亚洲一级黄色片| 亚洲一区二区少妇| 亚洲男人天堂2023| 亚洲视频第一页| 久久久久久有精品国产| 国产一区二区黑人欧美xxxx| 视频在线观看一区二区| 国产精品久久久久久av下载红粉| 成人性生交大片免费看视频直播| 欧美高清电影在线看| 欧美电影免费在线观看| 国产一区二区香蕉| 136fldh精品导航福利| 久久国产加勒比精品无码| 亚洲自拍偷拍第一页| 日韩成人av一区| 中文字幕在线视频日韩| 伊人成人开心激情综合网| 日韩成人中文电影| 日韩精品在线观看一区| 久久久999国产精品| 国产综合香蕉五月婷在线| 国产精品福利久久久| 亚洲韩国青草视频| 久久免费视频这里只有精品| 成人免费激情视频| 中文字幕av一区中文字幕天堂| 日韩免费精品视频| 精品国内亚洲在观看18黄| 久久久亚洲精选| 国产欧美精品xxxx另类| 亚洲最新av在线| 成人欧美一区二区三区在线| 亚洲精品电影网在线观看| 亚洲免费福利视频| 日韩欧美国产高清91| 亚洲第一福利网| 欧美老女人性生活| 欧美不卡视频一区发布| 亚洲男人av在线| 影音先锋欧美在线资源| 国产精品91一区| 国产精品福利无圣光在线一区| 亚洲欧美一区二区激情| 亚洲精品国产精品自产a区红杏吧| 最近2019年日本中文免费字幕| 热久久视久久精品18亚洲精品| 亚洲精品视频网上网址在线观看| 亚洲欧美日本伦理| 成人免费观看49www在线观看| 亚洲男女性事视频| 亚洲成人a级网| 成人自拍性视频| 中文字幕欧美日韩精品| 国产精品91在线观看| 欧美网站在线观看| 亚洲精品国产精品久久清纯直播| 91精品视频网站| 精品福利在线观看| 欧美国产日韩一区二区在线观看| 欧美一性一乱一交一视频| 亚洲欧美999| 国产成人福利视频| 欧美日韩国产中字| 日韩欧美成人区| 欧美区二区三区| 国产aⅴ夜夜欢一区二区三区| 欧美大尺度在线观看| 日韩欧美有码在线| 97在线免费观看视频| 亚洲精品国精品久久99热| 久久久久久国产精品| 精品一区二区三区四区| 国产免费亚洲高清| 国产一区二区三区四区福利| 国产成人欧美在线观看| 亚洲xxxx18| 日韩av电影院| 韩国国内大量揄拍精品视频| 国产一区二区黑人欧美xxxx| 午夜精品一区二区三区视频免费看| 国产一区私人高清影院| 成人激情视频在线观看| 亚洲成人在线网| 伊人久久久久久久久久久|