📄 serverframe.java
字号:
prest.setInt(3,g); int set=prest.executeUpdate(); jInfoTextArea.append(" ip="+socket.getInetAddress().getHostAddress()+"\n"); jInfoTextArea.append("udp send port="+Integer.toString(udpport+clientNum)+"\n"); String row[]=new String[2]; row[0]=nickname; row[1]=icqno; userList.addRow(row); } }//否者告诉客户失败 else { out.println("false"); jInfoTextArea.append(" Password Error\n"); } r.close();c.close(); } else{// 不存在该jicq号码 out.println("false"); jInfoTextArea.append("login false\n"); r.close(); c.close(); } } catch (Exception e){e.printStackTrace();} } /** 新建用户 */ private void newUser() { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//连接数据库 Connection c2=DriverManager.getConnection(url,username,password); String newsql="insert into icq(nickname,password,email,info,place,pic,sex,ip,status,sendport) " + "values(?,?,?,?,?,?,?,?,'上线',?)"; PreparedStatement prepare2=c2.prepareCall(newsql); //准备接受用户的呢称,密码,email,个人资料,籍贯,头像等信息 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()); String sex=in.readLine().trim(); prepare2.clearParameters(); prepare2.setString(1,nickname); prepare2.setString(2,password); prepare2.setString(3,email); prepare2.setString(4,info); prepare2.setString(5,place); prepare2.setInt(6,picindex); prepare2.setString(7,sex); prepare2.setString(8,socket.getInetAddress().getHostAddress()); prepare2.setInt(9,udpport+clientNum); int r3=prepare2.executeUpdate();//执行数据库添加 String sql2="select icqno from icq where nickname=?"; //告诉客户其注册的号码 PreparedStatement prepare3=c2.prepareCall(sql2); prepare3.clearParameters(); prepare3.setString(1,nickname); ResultSet r2=prepare3.executeQuery(); if(r2.next()){ //如果相同就告诉客户ok out.println("ok"); int no=r2.getInt(1); jInfoTextArea.append(nickname+"注册成功! jicq号码为:"+Integer.toString(no)+"\n"); String row[]=new String[2]; row[0]=nickname; row[1]=Integer.toString(no); out.println(row[1]);//返回给客户注册号码 userList.addRow(row); //返回给客户一个udp发送端口号 out.println(udpport+clientNum); } else out.println("false"); c2.close(); }// end of "new" try catch (Exception e){e.printStackTrace();} } private void findFriends(){ try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c3=DriverManager.getConnection(url,username,password); String myjicq=in.readLine().trim(); //以下连接数据库,并且返回其他用户的jicq号码,呢称,是否在线,ip地址,udp发送端口,个人资料,头像号,性别,邮件,籍贯 String find="select * from icq where icqno<>"+myjicq; Statement st=c3.createStatement(); ResultSet result=st.executeQuery(find); while(result.next()){ out.println(result.getString("nickname")); out.println(result.getString("icqno")); out.println(result.getString("status")); out.println(result.getString("ip")); out.println(result.getString("sendport")); out.println(result.getString("info")); out.println(result.getString("pic")); out.println(result.getString("sex")); out.println(result.getString("email")); out.println(result.getString("place")); }//while end out.println("over"); result.close();c3.close(); } catch (Exception e){e.printStackTrace();} } private void getFriendsInfo(){ try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c4=DriverManager.getConnection(url,username,password); //以下连接好友表,返回用户的好友名单 String friend="select friend from friend where icqno=?"; PreparedStatement prepare4=c4.prepareCall(friend); prepare4.clearParameters(); int icqno=Integer.parseInt(in.readLine().trim()); jInfoTextArea.append("获得"+Integer.toString(icqno)+"的好友资料"); prepare4.setInt(1,icqno); ResultSet r4=prepare4.executeQuery(); Vector friendno=new Vector();//该矢量保存好友号码 while(r4.next()){ friendno.add(new Integer(r4.getInt(1))); } r4.close(); //以下告诉客户其好友的呢称,号码,ip地址,端口,状态,头像,个人资料等信息 for(int i=0;i<friendno.size();i++){ String friendinfo="select * from icq where icqno=?"; PreparedStatement prepare5=c4.prepareCall(friendinfo); prepare5.clearParameters(); prepare5.setObject(1,friendno.get(i)); ResultSet r5=prepare5.executeQuery(); while(r5.next()){ out.println(r5.getString("nickname")); out.println(r5.getString("icqno")); out.println(r5.getString("status")); out.println(r5.getString("ip")); out.println(r5.getString("sendport")); out.println(r5.getString("info")); out.println(r5.getString("pic")); out.println(r5.getString("sex")); out.println(r5.getString("email")); out.println(r5.getString("place")); } r5.close(); } out.println("over"); jInfoTextArea.append("over\n"); c4.close(); } catch (Exception e){e.printStackTrace();} } private void addFriend(){ try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c6=DriverManager.getConnection(url,username,password); //连接数据库,根据接受的用户号码及好友号码向好友表添加记录 int friendicqno=Integer.parseInt(in.readLine()); int myicqno=Integer.parseInt(in.readLine()); jInfoTextArea.append(Integer.toString(friendicqno)+" and "+Integer.toString(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)jInfoTextArea.append(" addfriend ok\n"); else jInfoTextArea.append("addfriend false\n"); String friendinfo="select * from icq where icqno=?"; //如果成功,就向用户传递好友的基本信息,比如呢称等 PreparedStatement prepare5=c6.prepareCall(friendinfo); prepare5.clearParameters(); prepare5.setInt(1,friendicqno); ResultSet r5=prepare5.executeQuery(); if(r5.next()){ out.println(r5.getString("nickname")); out.println(r5.getString("icqno")); out.println(r5.getString("status")); out.println(r5.getString("ip")); out.println(r5.getString("sendport")); out.println(r5.getString("info")); out.println(r5.getString("pic")); out.println(r5.getString("sex")); out.println(r5.getString("email")); out.println(r5.getString("place")); } out.println("over"); r5.close();c6.close(); } catch (Exception e){e.printStackTrace();} } private void deleteFriend(){ try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c7=DriverManager.getConnection(url,username,password); //连接数据库,根据接受的用户号码及好友号码向好友表删除记录 int friendicqno=Integer.parseInt(in.readLine()); int myicqno=Integer.parseInt(in.readLine()); jInfoTextArea.append(Integer.toString(friendicqno)+" and "+Integer.toString(myicqno)); String sql="delete from friend where icqno=? and friend=?"; PreparedStatement prepare7=c7.prepareCall(sql); prepare7.clearParameters(); prepare7.setInt(1,myicqno); prepare7.setInt(2,friendicqno); int r7=0; r7=prepare7.executeUpdate(); if(r7==1)jInfoTextArea.append(" delete friend ok\n");//成功 else jInfoTextArea.append(" delete friend false\n");//失败 } catch (Exception e){e.printStackTrace();} } private void logout(){ try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c8=DriverManager.getConnection(url,username,password); //连接数据库,根据接受的用户号码,将其状态字段设为0,及ip地址设为空 int myicqno=Integer.parseInt(in.readLine()); jInfoTextArea.append(Integer.toString(myicqno)); String status="update icq set status='离线',ip=' ' where icqno=?"; PreparedStatement prest8=c8.prepareCall(status); prest8.clearParameters(); prest8.setInt(1,myicqno); int r8=prest8.executeUpdate(); if(r8==1){ jInfoTextArea.append(" logout ok\n"); out.println("ok"); for(int i=0;i<userList.getRowCount();i++){ if(myicqno==Integer.parseInt((String)userList.getValueAt(i,1))){ userList.removeRow(i); break; } } } else{ jInfoTextArea.append(" logout false\n"); out.println("false"); } } catch (Exception e){e.printStackTrace();} } }// end of class ServerThread}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -