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

📄 servercustomer.java

📁 网络聊天程序
💻 JAVA
字号:
package Java.ICQ;

import java.io.*;
import java.net.*;
import java.sql.*;
import java.util.Vector;

public class ServerCustomer extends Thread 
{
	private Socket socket;//定义套接口
    private BufferedReader in;//定义输入流
    private PrintWriter out;//定义输出流
    ConnectSQL con;
  public ServerCustomer(Socket socket) //线程构造函数
    {
      this.socket=socket;//取得传递参数
      con= new ConnectSQL();
      try
      {
      in=new BufferedReader(new InputStreamReader(socket.getInputStream()));//创建输入流
      out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);//创建输出流
      System.out.println("创建双向通讯管道成功");
      }
      catch(IOException ie)
      {
      	System.out.println("创建双向通讯管道失败");
      }
      
      start();//启动线程
      
   }
  public void run()
   {//线程监听函数
       	 while(true)
      	 {
      	 	try
      	 	{
      	 		transact();
      	 	}
      	 	catch(IOException e)
      	 	{
      	 		IOexception(e);
      	 		out.println("usernamepassword");
      	 		break;
      	 	}
      	 	
         }
   }
  public void transact() throws IOException
  {
      	String str=in.readLine();//取得输入字符串
  	 	System.out.println(str);
  	 		//如果是结束就关闭连接
      	 	if(str.equals("end"))
      	 	{
      	 		this.stop();
      	 	}
      	 	//如果是登录
      	  	if(str.equals("login")) 
      	 	{
      	 		login();
            }
            if(str.equals("new"))
            {
            	getUserMess();
            }
            if(str.equals("find"))
            {
            	find();
            }
            if(str.equals("friend"))
            {
            	friend();
            }
            if(str.equals("addfriend"))
            {
            	addfriend();
            }
            if(str.equals("addnewfriend"))
            {
            	addnewfriend();
            }
            if(str.equals("delfriend"))
            {
            	delfriend();
            }
            if(str.equals("logout"))
            {
            	logout();
            }
            if(str.equals("getwhoaddme"))
            {
            	getwhoaddme();
            }
  }
  //登录函数
  public void login() throws IOException
  {
   	 	int user=getUsername();
        String  password= getPassword();
        System.out.println(user);
        System.out.println(password);
         //连接数据库并查询
        con.connectDBSQL();
        String strpassword= con.LoginSQL(user,password);
        if(strpassword==null)
           out.println("usernameError");
        else
        {
          System.out.println(password.regionMatches(0,strpassword,0,strpassword.length()));	    
           //判断密码是否相等
           if(password.regionMatches(0,strpassword,0,strpassword.length()))
           {
              //如果相同就告诉客户ok
              //并且更新数据库用户为在线
              //以及注册用户的ip 地址
              String hostAddress = socket.getInetAddress().getHostAddress();
              System.out.println(hostAddress);
              con.connectDBSQL();
              con.updateSQL(hostAddress,user); 
              out.println("succeed");        	
           }
           else
           {
           	 out.println("passwordError");
           }
        }  

  }
  //注册用户函数
  public void getUserMess() throws IOException
  {
  	String nickname=in.readLine().trim();
    String password=in.readLine().trim();
    String email=in.readLine().trim();
    String sex=in.readLine().trim();
    String info=in.readLine().trim();
    String place=in.readLine().trim();
    int picindex=Integer.parseInt(in.readLine());
    con.connectDBSQL();
    System.out.println(nickname);
    System.out.println(password);
    System.out.println(email);
    System.out.println(sex);
    System.out.println(info);
    System.out.println(place);
    System.out.println(picindex);
    
    String falg = con.insertSQL(nickname,password,email,sex,info,place,picindex);
    System.out.println(falg);
    out.println(falg);

  }   
  //查找好友
  public void find() throws IOException
  {
  	con.connectDBSQL();
    Vector rs= con.findFriend();
    if(rs.size()>0)
    {
    	ObjectOutputStream objStream = new ObjectOutputStream(socket.getOutputStream());
    	objStream.writeObject((Vector)rs);    	
    }
  }
  //上线时读取好友的资料
  public void friend() throws IOException
  {
   		int friend=getFriend();
  	  	con.connectDBSQL();
    	Vector rs=con.readFriend(friend);
    	System.out.println(rs.size());
    	if(rs.size()>0)
    	{
    		System.out.println("找到好友");
    		out.println("FindFriend");
    		
    		ObjectOutputStream objStream = new ObjectOutputStream(socket.getOutputStream());
    		objStream.writeObject((Vector)rs);
    	}
    	else 
    	{  
    	   System.out.println("没有好友"); 
    	   out.println("notFindFriend");
    	}
  }
  //以下处理用户添加好友 
  public void addfriend() throws IOException
  {
   	   int friendicqno=getUsername();
       int myicqno= getUsername();
       con.connectDBSQL();
       String rs= con.addfriend(myicqno,friendicqno);
       out.println(rs);
  }
  //以下处理其他用户如果加我,我就加他
  public void addnewfriend() throws IOException
  {
  	int friendicqno= getUsername();//好友号码
  	int myicqno=getUsername();//自己号码
    con.connectDBSQL();
    System.out.println(friendicqno);
    Vector rsadd = con.addnewfriend(myicqno,friendicqno);//读取好友的资料
    con.connectDBSQL();
    String rsString=con.addfriend(myicqno,friendicqno);
    System.out.println(rsadd.size());
    if(rsadd.size()>0&&rsString.equals("addSucceed"))
      {
          	out.println("addSucceed");
          	ObjectOutputStream objStream = new ObjectOutputStream(socket.getOutputStream());
         	objStream.writeObject((Vector)rsadd);//把读取好友的资料发给客户
      }
     else if(rsadd.size()>0)
     {
     	out.println("addLost");
     }
     else
     {
     	out.println("addError");
     } 
  }
  //以下执行用户删除好友
  public void delfriend() throws IOException
  {
  	int friendicqno=getUsername();
  	int myicqno=getUsername();
  	con.connectDBSQL();
  	String rsdel = con.delfriend(myicqno,friendicqno);
  	System.out.println(rsdel);
  	out.println(rsdel);
  }
  //以下处理用户退出程序
  public void logout() throws IOException 
  {
  	int myicqno=getUsername();
  	System.out.println(myicqno);
  	con.connectDBSQL();
  	String rsdate = con.logout(myicqno);
  	System.out.println(rsdate);
  	out.println(rsdate);
  }
  //以下处理那些人加了我为好友,以便上线通知他们
  public void getwhoaddme() throws IOException
  {
  	int myicqno=getUsername();
  	con.connectDBSQL();
  	con.getwhoaddme(myicqno);
  }
  //从客户端获取用户名
  public int getUsername() throws IOException
     {
     	String icqno=in.readLine();
        int user=Integer.parseInt(icqno);//取得输入的jicq号码
        System.out.println(icqno);
        return user;
     }
  //从客户端获取密码
  public String getPassword() throws IOException
   {
        String passwd=in.readLine().trim();//取得输入的密码
        System.out.println(passwd);
        return passwd;
   } 
  public int getFriend() throws IOException
  {
      int icqno=Integer.parseInt(in.readLine());
      System.out.println(icqno);
      return icqno;
  }   
   //处理IO异常函数      
  public void IOexception(IOException e)
  {
  	System.out.println("读取数据出错"+e.getMessage());
  	
  }                  
                     
}

⌨️ 快捷键说明

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