服务器程序代码如下:(部分)
importjava.io.*;importjava.net.*;importjava.
sql.*;
importjava.util.Vector;classServerThreadextendsThread{//继承线程privateSocketsocket;//定义套接口privateBufferedReaderin;//定义输入流privatePrintWriterout;//定义输出流intno;//定义申请的jicq号码publicServerThread(Sockets)throwsIOException{//线程构造函数socket=s;//取得传递参数in=newBufferedReader(newInputStreamReader(socket.getInputStream()));//创建输入流out=newPrintWriter(newBufferedWriter(newOutputStreamWriter(socket.getOutputStream())),true);//创建输出流start();//启动线程}publicvoidrun(){//线程监听函数try{while(true){Stringstr=in.readLine();//取得输入字符串if(str.equals("end"))break;//如果是结束就关闭连接elseif(str.equals("login")){//如果是登录try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//连接数据库Connectionc=DriverManager.getConnection("jdbc:odbc:javaicq","","");Stringsql="selectnickname,passwordfromicqwhereicqno=?";//准备从数据库选择呢称和密码PreparedStatementprepare=c.prepareCall(sql);//设定数据库查寻条件Stringicqno=in.readLine();intg=Integer.parseInt(icqno);//取得输入的jicq号码System.out.println(icqno);Stringpasswd=in.readLine().trim();//取得输入的密码System.out.println(passwd);prepare.clearParameters();prepare.setInt(1,g);//设定参数ResultSetr=prepare.executeQuery();//执行数据库查寻if(r.next()){//以下比较输入的号码于密码是否相同Stringpass=r.getString("password").trim();System.out.println(pass);if(passwd.regionMatches(0,pass,0,pass.length())){out.println("ok");//如果相同就告诉客户ok//并且更新数据库用户为在线//以及
注册用户的ip地址//*************registeripaddressStringsetip="updateicqsetip=?whereicqno=?";PreparedStatementprest=c.prepareCall(setip);prest.clearParameters();
prest.setString(1,socket.getInetAddress().getHostAddress());prest.setInt(2,g);intset=prest.executeUpdate();System.out.println(set);//*************ipaddress//setstatusonlineStringstatus="updateicqsetstatus=1whereicqno=?";PreparedStatementprest2=c.prepareCall(status);prest2.clearParameters();prest2.setInt(1,g);intset2=prest2.executeUpdate();System.out.println(set2);//setonline}//否者告诉客户失败elseout.println("false");r.close();c.close();}else{out.println("false");System.out.println("false");r.close();c.close();}}catch(Exceptione){e.printStackTrace();}socket.close();}//endlogin//登录结束//以下为处理客户的新建请求elseif(str.equals("new")){Connectionc2=DriverManager.getConnection("jdbc:odbc:javaicq","","");Stringnewsql="insertintoicq(nickname,password,email,info,place,pic)values(?,?,?,?,?,?)";//准备接受用户的呢称,密码,email,个人资料,籍贯,头像等信息PreparedStatementprepare2=c2.prepareCall(newsql);Stringnickname=in.readLine().trim();Stringpassword=in.readLine().trim();Stringemail=in.readLine().trim();Stringinfo=in.readLine().trim();Stringplace=in.readLine().tr