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

📄 server.java.bak

📁 照书上做的JIM软件,不过不知道为什么还不能运行.要是能调出来功能绝对完善
💻 BAK
📖 第 1 页 / 共 2 页
字号:
//Server 类
import java.io.*;
import java.net.*;
import java.sql.*;
import java.util.Vector;
class ServerThread extends Thread
{
static String odbcDnsStr="jdbc:odbc:JIM";
String user;
String password;
private Socket socket;//定义套接口
private BufferedReader in;//定义输入流
private PrintWriter out;//定义输出流
//
  public ServerThread( String dbServerUser,String dbServerPassword,Socket s) throws 
  IOException 
   {
  	user=dbServerUser;
  	password=dbServerPassword;
  	socket=s;//取得传递参数
   in=new BufferedReader(new InputStreamReader(socket.getInputStream( )));//创建输入流
   
   out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream( ))),true);//创建输出流
   start( );//启动线程
   }
//
public void processLogin( )
{
	try 
	{ 
	  Connection c=DriverManager.getConnection(odbcDnsStr,user,password);
	  String sql="SELECT NickName,Password FROM Im WHERE ImNo=?";
	  PreparedStatement prepare=c.prepareCall(sql);
	  Sring ImNo=in.readLine( );
	  int g=Integer.parseInt(ImNo);
	  String passwd=in.readLine( ).trim( );
	  prepare.clearParameters( );
	  prepare.setInt(1,g);
	  ResultSet r=prepare.execteQuery( );
	  if(r.next( ))
	  {
	  	String pass=r.getString("Password").trim( );
	  	if(passwd.regionMatches(0,pass,0,pass.length( )))
	  	{
	  		out.println("OK");
	  		out.println("用户名已经正常登陆!");
	  		String setip="UPDATE Im SET Ip=?WHERE ImNo=?";
	  		PreparedStatement prest=c.prepareCall(setip);
	  		prest.clearParameters();
	  		prest.setString(1,socket.geInetAddress( ).getHostAddress( ));
	  		prest.setInt(2,g);
	  		int set=prest.executeUpdate( );
	  		String Online="UPDATE Im SET Online =1 WHERE ImNo=?";
	  		PreparedStatement prest2=c.prepareCall(Online);
	  		prest2.clearParameters( );
	  		prest2.setInt(1,g);
	  		int set2=prest2.executeUpdate();
	  		}
	  		else
	  		{
	  			out.println("FALSE");
	  			out.println("用户名的密码正确!");
	  			}
	  			r.close();
	  			c.close();
	  			
	  		}
	  		else
	  		{
	  			out.println("FALSE");
	  			out.println("用户名不存在!");
	  			r.close();
	  			c.close();
	  			}
	  	}
	  	catch(Exception e)
	  	{
	  		out.println("FALSE");
	  		out.println("服务器访问数据库出错!");
	  		}
	  }
	  		
	  		
//	
public void processNew( )
{
	try 
	   {
	    connection c=DriverManager.getConnection(odbcDnsStr,user,password);
	    int no=0;
	    String getImNo="SELECT MAX(ImNo)FROM Im";
	    PrepareStatement prepare3=c.prepareCall(getImNo);
	    ResultSet r=prepare3.executeQuery( );
	    while(r.next( ))
	    { 
	      no=r.getInt(1);
	      
	    }
	    no++;
	    String newsql="INSERT INTO Im(ImNo,NickName,PassWord,Face,Sex,Age,EMail,HomePage,Phone,Resume)values(?,?,?,?,?,?,?,?,?,?)";
	    PreparedStatement prepare=c.prepareCall(newsql);
	    String nickname=in.readLine( ).trim( );
	    String password=in.readLine( ).trim( );
	    int face=Integer.parseInt(in.readLine( ));
	    int sex=Integer.parseInt(in.readLine( ));
	    int age=Integer.parseInt(in.readLine( ));
	    String email=in.readLine( ).trim( );
	    String homepage=in.readLine( ).trim( );
	    String phone=in.readLine( ).trim( );
	    String resume=in.readLine( ).trim( );
	    prepare.clearParameters( );
	    prepare.setInt(1,no);
	    prepare.setString(2,nickname);
	    prepare.setString(3,password);
	    prepare.setInt(4,face);
	    prepare.setInt(5,sex);
	    prepare.setInt(6,age);
	    prepare.setString(7,email);
	    prepare.setString(8,homepage);
	    prepare.setString(9,phone);
	    prepare.setString(10,resume);
	    int r2=prepare.executeUpdate( );
	    out.println(no);
	    out.println("OK");
	    c.close();
	    }
	    catch (Exception e)
	    {
	     e.printStackTrace( );
	     out.println("-1");
	     out.println("FALSE");
	     }
	   }
	     
	//    
public void processFriend( )
{
	try
	  { 
       Connection c=DriverManager.getConnection(odbcDnsStr,user,password);
       String friend="SELECT Friend FROM Friend WHERE ImNo=?";
       PreparedStatement prepare=c.prepareCall(friend);
       prepare.clearParameters( );
       int ImNo=Integer.parseInt(in.readLine( ));
       prepare.setInt(1,ImNo);
       ResultSet r=prepare.executeQuery( );
       Vector friendNo=new Vector( );
       while( r.next( ))
       {
       	friendNo.add(new Integer(r.getInt(1)));
       }
       r.close();
       for(int i=0;i<friendNo.size( );i++)
       {
       	String friendinfo="SELECT NickName,Face,Sex,Age,Ip,RPort,Online,EMail,HomePage,Phone,Resume FROM Im WHERE ImNO=?";
       	PraparedStatement prepare2=c.prepareCall(friendinfo);
       	prepare2.clearParameters( );
       	prepare2.setObject(1,friendNo.get(i));
       	ResultSet rr=prepare2.executeQuery( );
       	boolean Online;
       	if(rr.next( ))
       	{
       	  out.println(rr.getString("NickName").trim( ));
          out.println(friendNo.get(i));
          out.println(rr.getInt("Face"));
          out.println(rr.getInt("Sex"));
          out.println(rr.getInt("Age"));
          out.println(rr.getString("IP").trim( ));
          out.println(rr.getInt("RPort"));
          Online=rr.getBoolean("Online");
          if(Online)out.println("1");
          else{out.println("0");}
          
        
         out.println(rr.getString("EMail").trim( ));
         out.println(rr.getString("HomePage").trim( ));
         out.println(rr.getString("Phone").trim( ));
         out.println(rr.getString("Resume").trim( ));
       	}
       	rr.close( );
       	}
       	out.println("OVER");
       	c.close( );
       	}
       	catch(Exception e)
       	{
       		e.printStackTrace( );
       	 
       	}
      }
//
 public void processAddNewFriend( )
       	{
       		try
       		{
       			Connection c=DriverManager.getConnection(odbcDnsStr,user,password);
       			int friendImNo=Integer.parseInt(in.readLine( ));
       			int myImNo=Integer.parseInt(in.readLine( ));
       			String sqlStr="SELECT ImNo FROM Im WHERE ImNO=?";
       			PreparedStatement prepare=c.prepareCall(sqlStr);
       			prepare.clearParameters();
       			prepare.setInt(1,friendImNo);
       			ResultSet rr=prepare.executeQuery();
       			if(!rr.next( ))
       			{
       				  out.println("FALSE");
       			    out.println("这个JIM编号的人不存在!");
       			    return;
       			}
       			rr.close( );
       			prepare.cancel( );
       			sqlStr="SELECT ImNo,Friend FROM Friend WHERE ImNo=?AND Friend=?";
       			prepare=c.prepareCall(sqlStr);
       			prepare.clearParameters( );
       			prepare.setInt(1,myImNo);
       			prepare.setInt(2,friendImNo);
       			rr=prepare.executeQuery();
       			if(rr.next( ))
       			{
       				out.println("FALSE");
       				our.println("该朋友已经加入了!");
       				return;
       				
                }
                rr.close( );
                prepare.cancel( );
                sqlStr="Insert INTO Friend values(?,?)";
                prepare=c.prepareCall(sqlStr);
                prepare.clearParameters( );
                prepare.setInt(1,myImNo);
                prepare.setInt(2,friendImNo);
                int r=0;
                r=prepare.executeUpdate();
                if(r!=1)
                {
                	out.println("FALSE");
                	out.println("加入好友时操作数据库出现错误!");
                	
                }
                else
                {
                String friendInfoSql="SELECT NickName,Face,Sex,Age,Ip,RPort,Online,EMail,HomePage,Phone,Resume FROM Im WHERE ImNo=?";
                prepare=c.prepareCall(friendInfoSql);
                prepare.clearParameters( );
                prepare.setInt(1,friendImNo);
                
                rr=prepare.executeQuery();
                boolean Online;
                if(rr.next())
                {
                	out.println(rr.getString("NickName").trim( ));
                	out.println(friendImNo);
                	out.println(rr.getInt("Face"));
                	out.println(rr.getInt("Sex"));
                	out.println(rr.getInt("Age"));
                	out.println(rr.getString("Ip").trim( ));
                	
                	out.println(rr.getInt("RPort"));
                	Online=rr.getBoolean("Online");
                	if(Online)

⌨️ 快捷键说明

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