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

📄 icqserver.java

📁 即时通讯
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
				sendString(outstream,"OK");
				sendString(outstream,icqNo);
				return;
			}catch(Exception e){ICQserver.errmsg("  modify() error:"+e);}
		sendString(outstream,"FAIL");
	}
	void serverMon(String inline,DataInputStream instream,PrintStream outstream)
	{
		try
		{
			String rPorts=null,ip=null;
			String sMsgs=null;
			String icqNo=null,id=null;
			long thistime=0,pasttime=0;
			int inc=3*60*1000;
			
			thistime=pasttime=new java.util.Date().getTime();
			pasttime+=inc;
			icqNo=inline.substring(inline.indexOf("icqNo:")+6);
			icqNo=icqNo.substring(0,icqNo.indexOf(' '));
			id=inline.substring(inline.indexOf("id:")+3);
			//if 'icqNo' has already online then logout
			Mission m=ICQserver.get(icqNo);
			if(m!=null){m.dupLogon=true;}
			ICQserver.set(icqNo,this);
			
			inline=null;
			//boolean exitwhile=false;
			client.setSoTimeout(200);
			while(!offline)
				try{
					if(outCmd.size()!=0){
						sendString(outstream,getCmd());
					}
					inline=receivString(instream);
					if(dupLogon){
						sendString(outstream,"SYSMSG \nDUPLOGON "+icqNo+"正被另一个人使用。");
						return;
					}
					sleep(100);
					thistime= new java.util.Date().getTime();
					//add the expence
					if(thistime>pasttime){
						String sql="update icqNo set integral=integral+0.05 where icqNo="+icqNo;
						stmt.executeUpdate(sql);
						pasttime=thistime+inc;
					}
				}catch(Exception e){}
			
			//ICQserver.errmsg("   preper logout.");
			String sql="update icqNo set statu=0 where icqNo="+icqNo;
			stmt.executeUpdate(sql);
			
			sql="select icqNo from friend where friendNo="+icqNo;
			rs  =  stmt.executeQuery(sql);
			String fIcqNo=null;
			while(rs.next())
				try{
					fIcqNo=rs.getString("icqNo");
					sMsgs="LOGOUT icqNo:"+icqNo;
					Mission fm=ICQserver.get(fIcqNo);
					if(fm!=null)fm.addCmd(sMsgs);
				}catch(Exception e){ICQserver.errmsg("  logout() distrbut ip or port error:"+e);}
			ICQserver.del(icqNo);
			ICQserver.errmsg("   "+icqNo+" logout,at IP:"+client.getInetAddress().toString());
		}catch(Exception e){ICQserver.errmsg("  serverMon() error:"+e);}
	}
	public void addCmd(String s){outCmd.addElement(s);}
	public String getCmd()
	{
		String s=(String)outCmd.elementAt(0);
		outCmd.removeElementAt(0);
		return s;
	}
	
	void seek(String inline,DataInputStream instream,PrintStream outstream)
	{
		try
		{
			String sql="select top 15 icqNo,nick,sex,age,addr,statu from icqNo";
			String sqlAdd="";
			if(-1!=inline.indexOf("SEEK nick:"))sqlAdd+=" where nick like '%"+inline.substring(inline.indexOf("nick:")+5).trim()+"%'";
			if(-1!=inline.indexOf("SEEK icqNo:")){String icqNo=inline.substring(inline.indexOf("icqNo:")+6);try{Integer.parseInt(icqNo);}catch(Exception e){sendString(outstream,"FAIL 输入的号码不正确:"+e);return;}sqlAdd+=" where icqNo="+icqNo;}
			if(-1!=inline.indexOf("SEEK email:"))sqlAdd+=" where email like '%"+inline.substring(inline.indexOf("email:")+6).trim()+"%'";
			sql+=sqlAdd;
			int page=0,pagesize=12;
			if(-1!=inline.indexOf("SEEK online:")){
				page=new Integer(inline.substring(inline.indexOf("online:")+7)).intValue()+1;
				String num=new Integer(page*pagesize).toString();
				sql="select top "+num+" icqNo,nick,sex,age,addr,statu from icqNo where statu=1";
			}

			//ICQserver.errmsg("  sql="+sql);
			rs  =  stmt.executeQuery(sql);
			String addr=null;
			String s="";
			if (page>0){for(int i=0;i<(page-1)*pagesize&&rs.next();i++);}
			while(rs.next())
			{
				s+=rs.getString("icqNo")+"  ";
				if(rs.getString("statu").equals("1"))s+="在线  ";
				else s+="离线  ";
				s+=rs.getString("nick")+"  ";
				s+=rs.getString("sex")+"  ";
				s+=rs.getString("age")+"  ";
				s+=rs.getString("addr");
				s+="\n";
			}
			if(s.equals("")){sendString(outstream,"FAIL 没找到");}
			else
			{
				//ICQserver.errmsg("  s="+s);
				sendString(outstream,"OK");
				sendString(outstream,s);
			}
		}catch(Exception e){sendString(outstream,"FAIL 服务器操作时出错:"+e);ICQserver.errmsg("  seek() error:"+e);}
	}
	void join(String inline,DataInputStream instream,PrintStream outstream)
	{
		try{
			String icqNo=inline.substring(inline.indexOf("icqNo:")+6);
			icqNo=icqNo.substring(0,icqNo.indexOf(' '));
			String friend=inline.substring(inline.indexOf("join:")+5);
			
			String sql="select check,forward from icqNo where icqNo="+friend;
			rs  =  stmt.executeQuery(sql);
			if(rs.next()){
				String note=rs.getString("forward");if(note==null)note="";
				String check=rs.getString("check");if(check==null)check="否";
				
				if(check.equals("否")){  //needn't check
					sql="select * from friend where icqNo="+icqNo+" and friendNo="+friend;
					rs  =  stmt.executeQuery(sql);
					
					if(!rs.next()){//if is friend already
						Mission m=ICQserver.get(friend);
						if(m!=null){
							m.addCmd("SYSMSG \nJOINED icqNo:"+icqNo+" 把你加为好友。");
						}
						else{        //if friend offline
							note+="JOINED icqNo:"+icqNo+" 把你加为好友。\n"; 
							sql="update icqNo set forward='"+note+"' where icqNo="+friend;
						}
						sql="insert into friend (icqNo,friendNo) values("+icqNo+","+friend+")";
						stmt.executeUpdate(sql);
						
						sql="select * from friend where icqNo="+friend+" and friendNo="+icqNo;
						rs  =  stmt.executeQuery(sql);
						if(!rs.next()){  //I am your friend.
							sql="insert into friend (icqNo,friendNo) values("+friend+","+icqNo+")";
							stmt.executeUpdate(sql);
						}
						sendString(outstream,"OK");
					}
					else sendString(outstream,"FAIL 你已经加他为好友了。");
					//sendString(outstream,"FAIL 添加到数据库时出错.");
				}
				else //need check
				{
					Mission m=ICQserver.get(friend);
					if(m!=null){
						m.addCmd("SYSMSG \nJOIN icqNo:"+icqNo+" 要把你加为好友。");
					}
					else{  //if offline
						note+="JOIN icqNo:"+icqNo+" 要把你加为好友。\n";
						sql="update icqNo set forward='"+note+"' where icqNo="+friend;
						stmt.executeUpdate(sql);
					}
					sendString(outstream,"FAIL 需要验证。"); //notfound
				}
			}
		}catch(Exception e){sendString(outstream,"FAIL 操作时出错。");ICQserver.errmsg("  join() error:"+e);}
		//end of this friend exist
	}
	void joined(String inline,DataInputStream instream,PrintStream outstream)
	{
		try{
			String icqNo=inline.substring(inline.indexOf("icqNo:")+6);
			icqNo=icqNo.substring(0,icqNo.indexOf(' '));
			String friend=inline.substring(inline.indexOf("join:")+5);
			String sql=null;
			
			Mission m=ICQserver.get(friend);
			if(m!=null){
				m.addCmd("SYSMSG \nJOINED icqNo:"+icqNo+" 把你加为好友。");
			}
			else{        //if friend offline
				sql="select forward from icqNo where icqNo="+friend;
				rs  =  stmt.executeQuery(sql);
				String note=rs.getString("forward");if(note==null)note="";
				note+="JOINED icqNo:"+icqNo+" 把你加为好友。\n"; 
				sql="update icqNo set forward='"+note+"' where icqNo="+friend;
				stmt.executeUpdate(sql);
			}
			//I am your friend
			sql="insert into friend (icqNo,friendNo) values("+friend+","+icqNo+")";
			stmt.executeUpdate(sql);
			
			//you are my friend
			sql="select * from friend where icqNo="+icqNo+" and friendNo="+friend;
			rs  =  stmt.executeQuery(sql);
			if(!rs.next()){  
				sql="insert into friend (icqNo,friendNo) values("+icqNo+","+friend+")";
				stmt.executeUpdate(sql);
			}else {
				sendString(outstream,"FAIL 你已经加他为好友了。");
				return;
			}
			
			sendString(outstream,"OK");
			
		}catch(Exception e){sendString(outstream,"FAIL 操作时出错。");ICQserver.errmsg("  joined() error:"+e.getMessage());e.printStackTrace();}
	}
	void forward(String inline,DataInputStream instream,PrintStream outstream)
	{
		try
		{
			String from=inline.substring(inline.indexOf("from:")+5);
			from=from.substring(0,from.indexOf(' '));
			String to=inline.substring(inline.indexOf("to:")+3);
			String msg=to.substring(to.indexOf(' ')+1);
			to=to.substring(0,to.indexOf(' '));
			
			Mission m=ICQserver.get(to);
			if(m!=null){
				m.addCmd("SYSMSG \n"+msg);
				sendString(outstream,"OK");
			}
			else{
				String sql="select forward from icqNo where icqNo="+to;
				rs  =  stmt.executeQuery(sql);
				if(rs.next()){
					String note=rs.getString("forward");
					if(note.lastIndexOf('\n')!=note.length()-1)note+="\n";
					msg=replace(msg,"'","''");  //if the forward msg comtain ' then the sql will error
					note+=msg+"\n";
					sql="update icqNo set forward='"+note+"' where icqNo="+to;
					//ICQserver.errmsg("  sql="+sql);
					stmt.executeUpdate(sql);
					sendString(outstream,"OK");
				}
				else	sendString(outstream,"FAIL 需要验证。");
			}
		}catch(Exception e){sendString(outstream,"FAIL 操作时出错。");ICQserver.errmsg("  forward() error:"+e);e.printStackTrace();}
		//end of this friend exist
	}
	void delFriend(String inline,DataInputStream instream,PrintStream outstream)
	{
		try
		{
			String icqNo=inline.substring(inline.indexOf("icqNo:")+6);
			icqNo=icqNo.substring(0,icqNo.indexOf(' '));
			String del=inline.substring(inline.indexOf("del:")+4);

			String sql="delete from friend where icqNo="+icqNo+" and friendNo="+del;
			//System.out.println("   delFriend sql="+sql);
			stmt.executeUpdate(sql);

			sendString(outstream,"OK");
		}catch(Exception e){sendString(outstream,"FAIL 操作时出错。");ICQserver.errmsg("  delFriend() error:"+e);}
		//end of this friend exist
	}
	void stranger(String inline,DataInputStream instream,PrintStream outstream)
	{
		try
		{
			sendString(outstream,"OK 完成。");
		}catch(Exception e){sendString(outstream,"FAIL 操作时出错。");ICQserver.errmsg("  stranger() error:"+e);}
		//end of this friend exist
	}
	String replace(String s1,String s2,String s3)
	{
		if(s1==null||s2==null||s3==null)return s1;
		String s="";
		try{
			while(-1!=s1.indexOf(s2)){
				s+=s1.substring(0,s1.indexOf(s2))+s3;
				s1=s1.substring(s1.indexOf(s2)+s2.length());
			}
			s+=s1;
		}catch(Exception e){ICQserver.errmsg("  replace() error:"+e);}
		return s;
	}
}

⌨️ 快捷键说明

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