我想本地调试JICQ
在jicq注册程序帐号的时候出现JLU-31FF50B0B69,8080的提示
不知道什么原因!是否有可能是为联接上数据库的原因?因为数据库里没有任何帐号信息,在进入帐户的时候输入任意东西点确定没有任何反应,应该是出现帐号错误等!
有用过老办JICQ程序的给点指导
服务器执行后得到Server start..ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=7890]
就这样一行代码!这是服务器端的原代码!用的是SQL server 2000数据库,名称是javaicq,已经建立,把文件导入,不知道是否用其他操作?

解决方案 »

  1.   

    SERVER
    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());
                          System.out.println(socket.getInetAddress().getHostAddress());
                          prest.setInt(2,g);
                          int set=prest.executeUpdate();
                          System.out.println("ip="+socket.getInetAddress().getHostAddress()+"   "+set);
                          //*************ipaddress
                          //set status online
                          //System.out.println("status = 1  "+set2);
                          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("status = 1  "+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,status,email,info,place,pic,sex) 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();
           String sex1;
           int sex=Integer.parseInt(in.readLine());
           //if(sex==0) sex1="男";else sex1="女";
    int status=0;
           int picindex=Integer.parseInt(in.readLine());
           prepare2.clearParameters();
           prepare2.setString(1,nickname);
           prepare2.setString(2,password);
    prepare2.setInt(3,status);
           prepare2.setString(4,email);
           prepare2.setString(5,info);
           prepare2.setString(6,place);
           prepare2.setInt(7,picindex);
           prepare2.setInt(8,sex);
           int r3=prepare2.executeUpdate();//执行数据库添加
           if(r3==0)out.println("false");
           else{
            out.println("ok");
           
    String sql2="select icqno from icq where nickname=?";
      

  2.   

    //以下告诉客户其注册的号码
           PreparedStatement prepare3=c2.prepareCall(sql2);
            prepare3.clearParameters();
           prepare3.setString(1,nickname);
           ResultSet r2=prepare3.executeQuery();
           int dd[]=new int[5];
           int i=0;
         while(r2.next()){
          //out.println(r2.getInt(1));
          no=r2.getInt(1);dd[i]=no;
          System.out.println(dd[i]);
          i++;
         }
          out.println(dd[i-1]);
          //out.println("ok");
    c2.close();}
    //完毕
         }catch (Exception e){e.printStackTrace();out.println("false");}
         socket.close();
       }//end new
    //新建用户结束
    //以下处理用户查找好友
    else if(str.equals("find")){
    try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection c3=DriverManager.getConnection("jdbc:odbc:javaicq","","");
      //以下连接数据库,并且返回其他用户的呢称,性别,籍贯,个人资料等信息
         String find="select nickname,sex,place,ip,email,info from icq";
        Statement st=c3.createStatement();
        ResultSet result=st.executeQuery(find);
         while(result.next()){
         out.println(result.getString("nickname"));
         out.println(result.getString("sex"));
         out.println(result.getString("place"));
         out.println(result.getString("ip"));
          out.println(result.getString("email"));
           out.println(result.getString("info"));
         }//while end
         out.println("over");
         ////////GET ICQNO
         int d,x;
    boolean y;
    //以下返回用户的jicq号码,头像号,及是否在线
         ResultSet iset=st.executeQuery("select icqno,pic,status from icq");
         while(iset.next()){
         d=iset.getInt("icqno");
         out.println(d);
         x=iset.getInt("pic");//pic info
         out.println(x);
         y=iset.getBoolean("status");
          if (y){out.println("1");}
               else {out.println("0");}
          //System.out.println(d);
         }
        // end send jicqno
        // iset.close();
         /////////icqno end
          c3.close();//result.close();
    }catch (Exception e){e.printStackTrace();System.out.println("false");}
    //socket.close();
    }//end find
    //查找好友结束
    //以下处理用户登录时读取其好友资料
    else if(str.equals("friend")){
    try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection c4=DriverManager.getConnection("jdbc:odbc:javaicq","","");
    //以下连接好友表,返回用户的好友名单
         String friend="select friend from friend where icqno=?";
         PreparedStatement prepare4=c4.prepareCall(friend);
            prepare4.clearParameters();
             int icqno=Integer.parseInt(in.readLine());
             System.out.println(icqno);
             prepare4.setInt(1,icqno);
           ResultSet r4=prepare4.executeQuery();
           Vector friendno=new Vector();//该矢量保存好友号码
            while(r4.next()){
          friendno.add(new Integer(r4.getInt(1)));
         }
    //read friend info
    //以下告诉客户其好友的呢称,号码,ip地址,状态,头像,个人资料等信息
        out.println(friendno.size());
              for(int i=0;i<friendno.size();i++){
             String friendinfo="select nickname,icqno,ip,status,pic,email,info from icq where icqno=?";
          PreparedStatement prepare5=c4.prepareCall(friendinfo);
          prepare5.clearParameters();
           prepare5.setObject(1,friendno.get(i));
          ResultSet r5=prepare5.executeQuery();
          boolean status;
             while(r5.next()){
           out.println(r5.getString("nickname"));
               out.println(r5.getInt("icqno"));
               out.println(r5.getString("ip"));
             status=r5.getBoolean("status");
             if (status)out.println("1");
               else {out.println("0");}
            out.println(r5.getInt("pic"));
            out.println(r5.getString("email"));
            out.println(r5.getString("info"));
         } //while
        // r5.close();
    }//for
    //发送完毕
         out.println("over");
         System.out.println("over");
          c4.close();//r4.close();
    }catch (Exception e){e.printStackTrace();System.out.println("false");}
    //socket.close();
    }//end friend
    //读取好友信息完毕
    //以下处理用户添加好友
     else if(str.equals("addfriend")){
    System.out.println("add");
     try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection c6=DriverManager.getConnection("jdbc:odbc:javaicq","","");
     //连接数据库,根据接受的用户号码及好友号码向好友表添加记录
            int friendicqno=Integer.parseInt(in.readLine());
              System.out.println(friendicqno);
             int myicqno=Integer.parseInt(in.readLine());
                System.out.println(myicqno);
                String addfriend="insert into friend values(?,?)";
                 PreparedStatement prepare6=c6.prepareCall(addfriend);
          prepare6.clearParameters();
           prepare6.setInt(1,myicqno);
           prepare6.setInt(2,friendicqno);
           int  r6=0;
          r6=prepare6.executeUpdate();
          if(r6==1) System.out.println("ok  addfrien");
          else  System.out.println("false addfriend");}catch (Exception e){e.printStackTrace();System.out.println("false");}//socket.close();
    System.out.println("over addfriend");
    }//end addfriend
    //用户添加好友结束
    //add new friend who add me
    //以下处理其他用户如果加我,我就加他
     else if(str.equals("addnewfriend")){
    System.out.println("add");
     try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection c6=DriverManager.getConnection("jdbc:odbc:javaicq","","");
      //连接数据库,根据接受的用户号码及好友号码向好友表添加记录
            int friendicqno=Integer.parseInt(in.readLine());
              System.out.println(friendicqno);
             int myicqno=Integer.parseInt(in.readLine());
                System.out.println(myicqno);
                String addfriend="insert into friend values(?,?)";
                 PreparedStatement prepare6=c6.prepareCall(addfriend);
          prepare6.clearParameters();
           prepare6.setInt(1,myicqno);
           prepare6.setInt(2,friendicqno);
           int  r6=0;
          r6=prepare6.executeUpdate();
          if(r6==1) System.out.println("ok  addfrien");
          else  System.out.println("false addfriend");String friendinfo="select nickname,icqno,ip,status,pic,email,info from icq where icqno=?";
    //如果成功,就向用户传递好友的基本信息,比如呢称等
        
      

  3.   

      PreparedStatement prepare5=c6.prepareCall(friendinfo);
          prepare5.clearParameters();
           prepare5.setInt(1,friendicqno);
          ResultSet r5=prepare5.executeQuery();
          boolean status;
             while(r5.next()){
             System.out.println("dsf");
           out.println(r5.getString("nickname"));
               out.println(r5.getInt("icqno"));
               out.println(r5.getString("ip"));
             status=r5.getBoolean("status");
             if (status)out.println("1");
               else {out.println("0");}
            out.println(r5.getInt("pic"));
            out.println(r5.getString("email"));
            out.println(r5.getString("info"));
         } //while
           out.println("over");
         //r5.close();
         c6.close();
    }catch (Exception e){e.printStackTrace();System.out.println("false");}
    System.out.println("over addnewfriend");
    }//end addfriend
    //结束处理其他用户如果加我,我就加他
    //delete friend
    //以下执行用户删除好友
    else if(str.equals("delfriend")){
    System.out.println("del");
    try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection c7=DriverManager.getConnection("jdbc:odbc:javaicq","","");
     //连接数据库,根据接受的用户号码及好友号码向好友表删除记录
            int friendicqno=Integer.parseInt(in.readLine());
              System.out.println(friendicqno);
             int myicqno=Integer.parseInt(in.readLine());
                System.out.println(myicqno);
                String addfriend="delete from friend where icqno=? and friend=?";
                 PreparedStatement prepare7=c7.prepareCall(addfriend);
          prepare7.clearParameters();
           prepare7.setInt(1,myicqno);
           prepare7.setInt(2,friendicqno);
           int  r7=0;
          r7=prepare7.executeUpdate();
          if(r7==1) System.out.println("ok  delfrien");//成功
          else  System.out.println("false delfriend");//失败
    }catch (Exception e){e.printStackTrace();System.out.println("del false");}
    }//end delete friend
    //执行用户删除好友结束
    //以下处理用户退出程序
    else if(str.equals("logout")){
    try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection c8=DriverManager.getConnection("jdbc:odbc:javaicq","","");
      //连接数据库,根据接受的用户号码,将其状态字段设为0,及ip地址设为空
             int myicqno=Integer.parseInt(in.readLine());
                System.out.println(myicqno);
                 String status="update icq set status=0 , ip=' ' where icqno=?";
                          PreparedStatement prest8=c8.prepareCall(status);
                           prest8.clearParameters();
                           prest8.setInt(1,myicqno);
                       int r8=prest8.executeUpdate();
                         if(r8==1) System.out.println("ok  logout");
          else  System.out.println("false logout");
    }catch (Exception e){e.printStackTrace();System.out.println("logout false");}
    }//logout end
    //处理用户退出程序结束
    //get who add me as friend
    //以下处理那些人加了我为好友,以便上线通知他们
    else if(str.equals("xiugaimima")){
    System.out.println("xiugaimima");
    try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection c10=DriverManager.getConnection("jdbc:odbc:javaicq","","");
     //连接数据库,根据我的号码,从表中找出我的密码
            int myicqno=Integer.parseInt(in.readLine());
            String password=in.readLine().trim();
            
             
                System.out.println(myicqno);
                System.out.println(password);
                String xiugaimima="select password from icq where icqno=?";
                 PreparedStatement prepare10=c10.prepareCall(xiugaimima);
          prepare10.clearParameters();
           prepare10.setInt(1,myicqno);
           ResultSet r10=prepare10.executeQuery();
           String pp="";
           if(r10.next()){
            pp=r10.getString("password").trim();
           }
           if(password.regionMatches(0,pp,0,pp.length())){
            String password2=in.readLine().trim();
            System.out.println(password2);
            String status="update icq set password=? where icqno=?";
                          PreparedStatement prepare11=c10.prepareCall(status);
                           prepare11.clearParameters();
                          prepare11.setString(1,password2);
                           prepare11.setInt(2,myicqno);
                           
                     int rr=prepare11.executeUpdate();
                       System.out.println(rr);
                         if(rr==1) {System.out.println("ok  xiugai");
                          out.println("ok");
                          }
                         }
                         else out.println("false");
                         c10.close();
           }catch(Exception e){System.out.println("xiugai cuowu");}

    }else if(str.equals("jibenxinxi")){
    System.out.println("xiugaijibenxinxi");
    try{
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection c88=DriverManager.getConnection("jdbc:odbc:javaicq","","");
    int myicqno=Integer.parseInt(in.readLine());
    System.out.println(myicqno);

    String newsql="update icq set nickname=?,email=?,info=?,place=?,pic=?,sex=? where icqno=?";
    //准备接受用户的呢称,email,个人资料,籍贯,头像等信息
           PreparedStatement prepare88=c88.prepareCall(newsql);
           String nickname=in.readLine().trim();
           
           String email=in.readLine().trim();
           String info=in.readLine().trim();
           int place=Integer.parseInt(in.readLine());
          
          // int sex=Integer.parseInt(in.readLine());
          // if(sex==0) sex1="男";else sex1="女";
           int picindex=Integer.parseInt(in.readLine());
           int sex1=Integer.parseInt(in.readLine());
           prepare88.clearParameters();
           prepare88.setString(1,nickname);
           
           prepare88.setString(2,email);
           prepare88.setString(3,info);
           prepare88.setInt(4,place);
           prepare88.setInt(5,picindex);
           prepare88.setInt(6,sex1);
           prepare88.setInt(7,myicqno);
           int r88=prepare88.executeUpdate();
           if(r88==1) out.println("ok");
           else out.println("false");
           c88.close();
    }catch(Exception e){System.out.println(e);}
    }
    else if(str.equals("fanhuixinxi")){
    System.out.println("fanhuixinxi");
    int myicq=Integer.parseInt(in.readLine());

    try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection c99=DriverManager.getConnection("jdbc:odbc:javaicq","","");
      //以下连接数据库,并且返回其他用户的呢称,性别,籍贯,个人资料等信息
         String fanhui="select nickname,sex,place,email,info,pic from icq where icqno=?";
         PreparedStatement prepare99=c99.prepareCall(fanhui);
          prepare99.clearParameters();
          prepare99.setInt(1,myicq);
        ResultSet result99=prepare99.executeQuery();
         while(result99.next()){
         out.println(result99.getString("nickname"));
         out.println(result99.getString("sex"));
         out.println(result99.getString("place"));
         //out.println(result.getString("ip"));
          out.println(result99.getString("email"));
           out.println(result99.getString("info"));
           out.println(result99.getString("pic"));
         }//while end
         System.out.println("ok,fanhuile");
         c99.close();
         }catch(Exception e){
          System.out.println(e);
          System.out.println("cou le ya");
         }
    }else if(str.equals("getwhoaddme")){
    System.out.println("getwhoaddme");
     try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection c9=DriverManager.getConnection("jdbc:odbc:javaicq","","");
     //连接数据库,根据我的号码,从好友表中选择谁加了我