⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serverthread.java

📁 可以支持很多人在线聊天
💻 JAVA
字号:
package talk3;


import java.io.*;
import java.net.*;
import java.sql.*;
import java.util.Vector;
import javax.swing.JOptionPane;



class ServerThread extends Thread{
private Socket socket;
private BufferedReader in;
private PrintWriter out;
long no;//定义申请的jicq号码
int a=3;




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);//true
start();
}







public void run()
{
try{
while(true)
{
String str=in.readLine();
if(str.equals("end"))break;
//不断的进行监听chucuo//////////////////////////////////////////////////////////.


//---->



else if(str.equals("chakan") ){
String a2=in.readLine().trim() ;
System.out.println(a2) ;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection c2=DriverManager.getConnection("jdbc:odbc:my","sa","");
String s="select state,nu from group1 where ip =?";
PreparedStatement prepare=c2.prepareCall(s);
prepare.clearParameters();
prepare.setString(1,a2);
ResultSet r=prepare.executeQuery();
int linshi=0;
int linshinu=0;
if(r.next()){
linshi =r.getInt(1) ;
System.out .println("////////////////////////"+linshi) ;
linshinu=r.getInt(2) ;
}
r.close();
c2.close();
  System.out .println("////////////////////////"+linshi) ;

if (linshi==0){
JOptionPane.showMessageDialog(null,"你不具有权限!") ;
out.println("over") ;
}
else{
Connection c3=DriverManager.getConnection("jdbc:odbc:my","sa","");
String s3="select name from  group1 where nu=?";
PreparedStatement prepare3=c3.prepareCall(s3);
prepare3.clearParameters();
prepare3.setInt(1,linshinu);
ResultSet r3=prepare3.executeQuery();
while(r3.next()) {
out.println(r3.getString(1)) ;
}
System.out.println(linshinu) ;
out.println("over");
r3.close();
c3.close();
}
}
catch (Exception e ){System.out.println(e+"fgfffffffffffffffffffffffff") ;}
}










else if(str.equals("login")) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection c=DriverManager.getConnection("jdbc:odbc:my","sa","");
String sql="select nickname,password from icq where icqno=?";
PreparedStatement prepare=c.prepareCall(sql);
String ip=in.readLine() ;
String icqno=in.readLine();
int g=Integer.parseInt(icqno);
String passwd=in.readLine().trim();
prepare.clearParameters();
prepare.setInt(1,g);
ResultSet r=prepare.executeQuery();
if(r.next()){
String pass=r.getString("password").trim();
if(passwd.regionMatches(0,pass,0,pass.length()))
{
out.println("ok");
String setip="update icq set ip=? where icqno=?";//设置新的ip;
PreparedStatement prest=c.prepareCall(setip);
prest.clearParameters();
prest.setString(1,ip);
prest.setInt(2,g);
int set=prest.executeUpdate();
String status="update icq set status=1 where icqno=?";//生成新的状态。
PreparedStatement prest2=c.prepareCall(status);
prest2.clearParameters();
prest2.setInt(1,g);
int set2=prest2.executeUpdate();
}
else
out.println("false");
r.close();c.close();
}
else
{
out.println("false");

r.close();
c.close();
}
}catch (Exception e){e.printStackTrace();}
socket.close();
}
//<----登录结束














//---->
else  if(str.equals("new"))
{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection c2=DriverManager.getConnection("jdbc:odbc:my","sa","");
Statement stmt=c2.createStatement();
System.out.println("执行最大值");
ResultSet rs=stmt.executeQuery("select max(icqno)  from icq");
rs.next();
int max=rs.getInt(1)+1;
rs.close();

String newsql="insert into icq(icqno,nickname,password,ip,status,email,info,place,pic)"+
"values(?,?,?,?,0,?,?,?,?)";

PreparedStatement prepare2=c2.prepareCall(newsql);
String nickname=in.readLine().trim();
String password=in.readLine().trim();
String ip=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.setInt(1,max);
prepare2.setString(2,nickname);
prepare2.setString(3,password);
prepare2.setString(4,ip);
prepare2.setString(5,email);
prepare2.setString(6,info);
prepare2.setString(7,place);
prepare2.setInt(8,picindex);
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();
while(r2.next()){
no=r2.getInt(1);
}
out.println(no);
out.println("ok");
r2.close();
c2.close();

}catch (Exception e){e.printStackTrace();out.println("false");}
socket.close();
}//<----返回新建的号码。
















//---->
else if(str.equals("find"))
{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection c3=DriverManager.getConnection("jdbc:odbc:my","sa","");
String find="select icqno,nickname,sex,place,ip,email,info from icq where status=1";
Statement st=c3.createStatement();
ResultSet result=st.executeQuery(find);
while(result.next()){
out.println(result.getString("icqno"));
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"));
}
out.println("over");
int d,x;
boolean y;
result.close();

ResultSet iset=st.executeQuery("select icqno,pic,status from icq");
while(iset.next()){
d=iset.getInt("icqno");
out.println(d);
x=iset.getInt("pic");
out.println(x);
y=iset.getBoolean("status");
if (y){
out.println("1");
}
else {
out.println("0");
}
}



iset.close();
c3.close();
}
catch (Exception e){e.printStackTrace();System.out.println("false");}
}
//<----完成查找功能。


else if(str.equals("group") ){
try {
String liname=(in.readLine() ).trim() ;
int lijicqno=Integer.parseInt(in.readLine() ) ;
String liip=in.readLine().trim() ;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection c2=DriverManager.getConnection("jdbc:odbc:my","sa","");
Statement stmt=c2.createStatement();
ResultSet rs=stmt.executeQuery("select max(nu)  from group1");
rs.next();
int max=rs.getInt(1)+1;
rs.close();
String newsql="insert into group1(jicqno,name,state,ip,nu,xianshi)"+
"values(?,?,1,?,?,1)";

PreparedStatement prepare2=c2.prepareCall(newsql);
prepare2.clearParameters();
prepare2.setInt(1,lijicqno);
prepare2.setString(2,liname);
prepare2.setString(3,liip);
prepare2.setInt(4,max);
int r3=prepare2.executeUpdate();
c2.close() ;

}
catch(Exception e){
  System.out.println(e);
System.out.println("wrong here!!!!!!!") ;
}
}









//---->
else if(str.equals("friend")){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection c4=DriverManager.getConnection("jdbc:odbc:my","sa","");
String friend="select distinct friend from friend where icqno=?";
PreparedStatement prepare4=c4.prepareCall(friend);
prepare4.clearParameters();
int icqno=Integer.parseInt(in.readLine());
prepare4.setInt(1,icqno);
ResultSet r4=prepare4.executeQuery();
Vector friendno=new Vector();
while(r4.next()){
friendno.add(new Integer(r4.getInt(1)));
}
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"));
}
r5.close();
}

out.println("over");
System.out.println("over");
r4.close();
c4.close();
}catch (Exception e){e.printStackTrace();System.out.println("false");}
}
//<----读取好友信息完毕



else if (str.equals("liaotian"))
{
int a = Integer.parseInt(in.readLine());
System.out.println(a+"     /////") ;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection c4 = DriverManager.getConnection("jdbc:odbc:my", "sa","");
String friend = "select distinct nu from group1 where jicqno=? and state=1";

System.out.println("///////////////////here") ;
PreparedStatement prepare4 = c4.prepareCall(friend);
prepare4.clearParameters();
prepare4.setInt(1, a);
ResultSet r4 = prepare4.executeQuery();
r4.next() ;
int b = r4.getInt(1);
r4.close();
c4.close() ;

Connection c5 = DriverManager.getConnection("jdbc:odbc:my", "sa","");
String friend2 = "select name,ip from group1 where nu=?";
PreparedStatement prepare5 = c5.prepareCall(friend2);
prepare5.clearParameters();
prepare5.setInt(1, b);
ResultSet r5 = prepare5.executeQuery();
  System.out.println(r5);
System.out .println(b+"==========================") ;
while (r5.next())
{
out.println(r5.getString("ip") ) ;
//out.println(r5.getString("name"));
}
System.out .println(b+"==========================") ;
out.println("false");
r5.close() ;
c5.close() ;
}
catch (Exception e) {
System.out.println(e);
out.println("false");
}
}








//---->
else if(str.equals("addfriend")){
try{
String b="";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection c6=DriverManager.getConnection("jdbc:odbc:my","sa","");
int friendicqno=Integer.parseInt(in.readLine());
String id=in.readLine().trim() ;
int myicqno=Integer.parseInt(in.readLine());
try{String friendinfo="select nu ,name from group1 where jicqno=?";
PreparedStatement prepare5=c6.prepareCall(friendinfo);
prepare5.clearParameters();
prepare5.setInt(1,myicqno) ;
ResultSet r5=prepare5.executeQuery();
r5.next();
a=r5.getInt(1) ;
b=r5.getString(2).trim()  ;
r5.close();
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,"你不具有权限!") ;
}

if(a==0){
JOptionPane.showMessageDialog(null,"你不具有权限!") ;
c6.close();
}
else{
String addfriend="insert into group1(jicqno,name,state,ip,nu,xianshi)"+
"values(?,?,0,?,?,1)";
PreparedStatement prepare6=c6.prepareCall(addfriend);
prepare6.clearParameters();
prepare6.setInt(1,friendicqno);
prepare6.setString(2,b);
prepare6.setString(3,id);
prepare6.setInt(4,a) ;
int  r6=0;
r6=prepare6.executeUpdate();
if(r6==1) System.out.println("ok  addfrien");
else  System.out.println("false addfriend");

c6.close();
}
}catch (Exception e){e.printStackTrace();}
socket.close() ;///////////////////////////////////////////////////////////////
}
//用户添加好友结束。










//---->
else if(str.equals("addnewfriend")){
System.out.println("add");
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection c6=DriverManager.getConnection("jdbc:odbc:my","sa","");
int friendicqno=Integer.parseInt(in.readLine());
System.out.print(friendicqno) ;
int myicqno=Integer.parseInt(in.readLine());
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=?";

PreparedStatement prepare5=c6.prepareCall(friendinfo);
prepare5.clearParameters();
prepare5.setInt(1,friendicqno);
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"));
}
out.println("over");
r5.close();
c6.close();
}catch (Exception e){e.printStackTrace();System.out.println("false");
}
System.out.println("over addnewfriend");
}
//---->结束处理其他用户如果加我,我就加他











//---->
else if(str.equals("delfriend")){
System.out.println("del");
try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection c7=DriverManager.getConnection("jdbc:odbc:my","sa","");
 int friendicqno=Integer.parseInt(in.readLine());
 int myicqno=Integer.parseInt(in.readLine());
 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");}
}
//---->执行用户删除好友结束












//---->
else if(str.equals("logout")){
try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection c8=DriverManager.getConnection("jdbc:odbc:my","sa","");
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");}
}
//<----处理用户退出程序结束





//---->
else if(str.equals("getwhoaddme")){
try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection c9=DriverManager.getConnection("jdbc:odbc:my","sa","");
int myicqno=Integer.parseInt(in.readLine());
String getwhoaddme="select icqno from friend where friend=?";
PreparedStatement prepare6=c9.prepareCall(getwhoaddme);
prepare6.clearParameters();
prepare6.setInt(1,myicqno);
ResultSet r6=prepare6.executeQuery();
Vector who=new Vector();
while(r6.next()){
 who.add(new Integer(r6.getInt(1)));
 }
for(int i=0;i<who.size();i++){
String whoinfo="select ip from icq where icqno=? and status=1";
PreparedStatement prepare=c9.prepareCall(whoinfo);
prepare.clearParameters();
prepare.setObject(1,who.get(i));
ResultSet r=prepare.executeQuery();
while(r.next()){
out.println(r.getString("ip"));
}
r.close();
}
out.println("over");
System.out.println("over");
r6.close();
c9.close();
}catch (Exception e){e.printStackTrace();System.out.println("false");}
}
//<----处理那些人加了我为好友,以便上线通知他们









//处理上线结束
System.out.println("Echo ing :"+str);
}  System.out.println("Close...");
}catch(IOException e){}//捕或异常
finally {try{socket.close();}
catch(IOException e){}
}
}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -