multiuser.java

来自「用jsp做的能够实现简单的短信息发送回复的短消息系统」· Java 代码 · 共 983 行 · 第 1/2 页

JAVA
983
字号
		//System.out.println(str_username);
		String str_passwd1 = new String(passwd);
		str_passwd = str_passwd1.trim();
		//System.out.println(str_passwd);
		String str_addr1  = new String (addr);
		str_addr = str_addr1.trim();
		//System.out.println(str_addr);
	
		successorfalse = true;
		} 
	catch (IOException e) 
	{ 
		e.getMessage();
		e.getStackTrace();
		System.out.println("载入用户名密码地址错误");
		successorfalse = false; 
	} 
	try 
	{ 
		infile.close(); 
	} 
	catch (IOException e) 
	{ 
		successorfalse = false ;
		System.out.println("文件关闭错误"); 
		System.exit(1); 
	}
	System.out.println("\t载入用户名密码地址成功"+'\n'); 
	return successorfalse;
} 

/******************************************************************************************************************
*				函数 smkDemoLogin(String,String,String)由网通提供 
*******************************************************************************************************************/
private boolean smkDemoLogin (String url1, String LoginCode, String pwd)
	{
		
    	try
	{
		
    	 	smsSender = new SmsSender(url1, LoginCode, pwd);
    	 	smsSender.login();         		//张明在实际中必须要
    		System.out.println("\tjava 向网通注册成功");
    		loginWangTong.writeLog("\tjava 向网通注册成功");
    	
        }
	catch (SmkException e)
	{
		
		System.out.println("\t向网通注册失败!!!请检查网络");
		loginWangTong.writeLog("\t向网通注册失败!!!请检查网络");
		
		return false;
        }
       return true;
    }
 /*********************************************************************************************************************
 *			函数名: writeLog
 			参数 : string  
 *			功能:  产生日志文件
 *			日期: 20060430
 			编写人: 张明
 **********************************************************************************************************************/   
public static void writeLog( String str_write_stream)
    {
    	
    	
    	Calendar my_calendar  = Calendar.getInstance();
	
    	File write_file = null;
      	int hour =0 ,second = 0 , minute = 0 ;
    	try
    	{
    		String str_file = new String("log"+(my_calendar.get(Calendar.YEAR))+"-"+(my_calendar.get(Calendar.MONTH)+1)+"-"+my_calendar.get(Calendar.DAY_OF_MONTH)+".txt");
    		
    		write_file = new File(".\\log\\"+str_file);
    		
    		if (write_file.exists())
    		{
    			;
    		}
    		else
    		{
    	
    			write_file.createNewFile();
		}
		FileOutputStream  LogFile = new FileOutputStream(write_file,true);
		
    		String str_log_stream = new String("网通: " +(my_calendar.get(Calendar.HOUR_OF_DAY)) + ":"+(my_calendar.get(Calendar.MINUTE))+":"+(my_calendar.get(Calendar.SECOND))+"  :" +str_write_stream+"\r\n");
    		LogFile.write(str_log_stream.getBytes());
    		LogFile.close();
	}
	catch(IOException e)
	{
		System.out.println("写日志文件失败");
		loginWangTong.writeLog("\t写日志文件失败");
		
	}
     }
    	

 /*********************************************************************************************************************
 *			函数名: writeLog
 			参数 : string  
 *			功能:  产生日志文件
 *			日期: 20060430
 			编写人: 张明
 **********************************************************************************************************************/   
public static void write_No_Send_Message( String str_write_stream)
    {
    	File write_file = null; 
    	try
    	{
    		String str_file = new String("No_Send_Mobile_Message"+".txt");
    		
    		write_file = new File(".\\log\\No_Send_Message\\"+str_file);
    		
    		if (write_file.exists())
    		{
    			;
    		}
    		else
    		{
    	
    			write_file.createNewFile();
		}
		FileOutputStream  LogFile = new FileOutputStream(write_file,true);
		
    		String str_log_stream = new String(str_write_stream.replaceAll("\r\n"," ")+"\r\n");
    		LogFile.write(str_log_stream.getBytes());
    		LogFile.close();
	}
	catch(IOException e)
	{
		System.out.println("写日志文件失败");
		loginWangTong.writeLog("\t写日志文件失败");
		
	}
     }
    	

/** read_No_Send_Message 函数 **/
public static boolean read_No_Send_Message()
 	{
	boolean  successorfalse = false ;
	boolean  exit_bool      = true  ;
	FileInputStream infile = null; 
	File read_file = null ;

	// 生成对象infile 准备读取文件 
	try 
	{ 
				
		String str_file = new String("No_Send_Mobile_Message.txt");
    
    		
    		read_file = new File(".\\log\\No_Send_Message\\"+str_file);
    	
		infile = new FileInputStream(read_file); 
	} 
	catch (FileNotFoundException e) 
	{ 
		System.err.println("java 没有找到  No_Send_Mobile_Message.txt文件,请查看javatest目录下是否有此文件");
		writeLog("\t java 没有找到  No_Send_Mobile_Message.txt文件,请查看javatest目录下是否有此文件");
		return false; 
	} 
	try 
	{ 
			byte[] mobile   = new byte[22];
 			byte[] message = new byte[150];
 			byte[] query     = new byte[7];
		int n = 0 , i = 0;  //n为文件结尾判断,i为读取的行数
		int mobile_len=0 ,message_len= 0 ,query_len = 0 , file_len = 0;
		while(((n= infile.read())!= -1))
		{ 
			
			if(file_len<21)
				mobile[mobile_len++] = (byte) n;
			else if(file_len<27)
				query[query_len++] =(byte) n;
			else
				message[message_len++] =(byte) n;
			file_len++;
				
			if(((char) n =='\n'))
			{
				String str_mobile1 = new String(mobile);
				String str_message1 = new String(message);
				String str_query1  = new String (query);
				String str_mobile = str_mobile1.trim();
				String str_message =str_message1.trim();
				String str_query = str_query1.trim();
				System.out.println("文件中读出的手机号是:" + str_mobile);
				System.out.println("文件中读出的流水号是:" + str_query);
				System.out.println("文件中读出的短消息是:" + str_message);
				if((str_mobile.length()<11))
				{
					;
				}
				else
				{
					if(!(successorfalse = MultiUser.sendMessage(str_message,str_query,str_mobile)))		//张明
					{
						 successorfalse = false;
					  	 break ;
					}
				}
				mobile_len=0 ;message_len= 0 ;query_len = 0;file_len = 0;
				message = new byte[150];
				successorfalse = true;
			}
		}
	} 
	catch (IOException e) 
	{ 
		
		System.out.println("载入用户名密码地址错误");
		successorfalse = false; 
	} 
	try 
	{ 
		infile.close(); 
	} 
	catch (IOException e) 
	{ 
		successorfalse = false ;
		System.out.println("文件关闭错误"); 
		System.exit(1); 
	}
	if(successorfalse)
		System.out.println("\t载入未发送的数据   发送成功"+'\n'); 
	else
		System.out.println("\t载入未发送的数据   发送失败"+'\n');
	return successorfalse;
    }
} 


/****************************************************************************************************************
*		类名: RemainAction
		功能:向网通发送网络检测	
*		日期:200427
		编写者: 张明
*
***************************************************************************************************************/

class RemainAction  extends Thread 
{
	int i = 0;
	private boolean exit_bool;
	public void RemainAction()
	{
		exit_bool = false;
	}
	public void run()
	{
		while (true)
		{
			try
			{
				this.sleep(120000);  
				System.out.println(" 正在检查网通于交行银信通java的连接状态");
				i = loginWangTong.smsSender.getState();			//张明
				if (i == 1)
				{
					System.out.println(" 网通与交行银信通java的连接状态 正常");
					loginWangTong.writeLog("\t网通与交行银信通java的连接状态 正常");
				}
				else 
				{
					System.out.println("与网通的连接以断开");
					loginWangTong.writeLog("\t网通 网络状态检测发现,网通以将连接断开");
					break ;
				}
				if(exit_bool)
					break;	
			}
			catch( InterruptedException e)
			{
				System.out.println("调用网通网络检测函数getState 错误");
				loginWangTong.writeLog("\t调用网通网络检测函数getState 错误 请检查网通的环境状态");
				break;
				
				
			}
			
		}
	}
/*******************************************************************************************************************
*
*********************************************************************************************************************/
public void RemainAction_exit()
	{
		exit_bool = true;
	}
	
}

/*****************************************************************************************************************
*
*
*
*****************************************************************************************************************/

class Xiao_Ling_Tong extends Thread
{
	private  static ServerSocket server = null;
	private Socket       client = null;
	private String str_message  = null;
 	private String   str_Message =null;
 	private String   str_Mobile = null;
 	private String    str_Query = null;
 	private boolean success_or_false = false ;
 	private boolean exit_bool;
 	public  Xiao_Ling_Tong()
 		{
 			exit_bool = false;
  			
 		}
 
 	public void run()
 	{
  		try
  		{   	
  			server = new ServerSocket(8006);
  			while(true)
  			{
  				System.out.println("小灵通在端口8006在等待alink连接!");
  				client=server.accept();
   				
   				DataInputStream in = new DataInputStream(client.getInputStream());
				DataOutputStream out = new DataOutputStream(client.getOutputStream());
	
				//服务器端读去客户端的数据
				while(true)
   				{
   					int i = 0 ;
					byte[] b = new byte[1024];
					i = in.read(b, 0, b.length);
					if (i ==-1)
					{
						System.out.println(" 小灵通  与alink通讯以完成,alink以退出");
						loginWangTong.writeLog("\t小灵通 与alink通讯以完成,alink以退出");
						if(!(client.isClosed()))
							client.close();
						break ;
					}
					String str1 = new String(b);
					str_message  = str1.trim();
					if( (str_message.length()>=20) )
					{
						String str_Mobile1 = null , str_Query1 = null , str_Message1 = null;
						//System.out.println("str_Message"+str_message+"长度是::"+str_message.length());
						str_Mobile1 = str_message.substring(0,20);
					
						str_Message1 = str_message.substring(20,(str_message.length()-6));
						str_Mobile = str_Mobile1.trim();
					
						str_Message = str_Message1.trim();
					
					
						//System.out.println("小灵通str_Mobile:"+str_Mobile1+"str_mobile长度" +str_Mobile1.length());
						//loginWangTong.writeLog("\t小灵通str_Mobile:"+str_Mobile);
					
					
						//System.out.println("小灵通str_Message:"+str_Message+"长度是::"+str_Message.length());
						
						String outStr = "0000";
						out.write(outStr.getBytes(),0,outStr.length());
						out.flush();
						  //网通要求的小灵通短信长度是45个字符
						
						i = str_Message.length();
						if(i<=45)
						{
							//loginWangTong.write_No_Send_Message(str_Mobile1+" 123456"+str_Message);
							if(!(success_or_false = MultiUser.sendMessage(str_Message,"12345",str_Mobile)))		//张明
							{
								loginWangTong.write_No_Send_Message(str_Mobile1+" 123456"+str_Message);
					 		 	
							}
							else
							{
								loginWangTong.writeLog("\t小灵通成功发送的数据是str_Message:"+str_Message+"\t手机号是::"+str_Mobile);
							}
						}
						else
						{
							int length = 0;
							
							while(true)
							{
								String str3_Message = null;
								if(i>45)
								{	
									i = i - 45;
									
									str3_Message = str_Message.substring(length,length+45);
									//System.out.println("str_3"+str3+"长度是::"+str3.length());
									//System.out.println("str_Message"+str_Message+"长度是::"+str_Message.length());
									length = length+45;
									if(!(success_or_false = MultiUser.sendMessage(str3_Message,"123456",str_Mobile)))		//张明
									{
										loginWangTong.write_No_Send_Message(str_Mobile1+" 123456"+str3_Message);
					 		  	 		
					   	  				
									}
									else
									{
										loginWangTong.writeLog("小灵通成功发送的数据是str_Message:"+str_Message+"\t手机号是::"+str_Mobile);
										
									}
									
								}
								else
								{
									//System.out.println("str_Message"+str3+"长度是::"+length+"i 是" +i);
									str3_Message = str_Message.substring(length,length+i);
									//System.out.println("str_3"+str3+"长度是::"+str3.length());
									if(!(success_or_false = MultiUser.sendMessage(str3_Message,"123456",str_Mobile)))		//张明
									{
										loginWangTong.write_No_Send_Message(str_Mobile1+" 123456"+str3_Message);
					 		  	 		
					   	  				break ;
									}
									else
									{
										loginWangTong.writeLog("小灵通成功发送的数据是str_Message:"+str_Message+"\t手机号是::"+str_Mobile);	
										break;
									}
								}
							}
						}
					}
					else
						System.out.println("\n接收的数据是:"+str_message);
				
					if (exit_bool)
					{
						break;
					}
					if(!(client.isClosed()))
					{
							
						client.close();
						loginWangTong.writeLog("\t小灵通 与alink通讯以完成,alink以退出");
						break ;
					}
						
				}
				if(exit_bool)
				{
					if(!(client.isClosed()))
					{	
						client.close();
					}
					System.out.println("小灵通 出现 错误线程 正在关闭");
					loginWangTong.writeLog("\t小灵通 出现严重错误线程正在关闭");
					server.close();
					break;
				}
			}
		}
		catch(IOException ioe )	
		{
			
			System.out.println("小灵通 出现严重错误线程正在关闭");
			loginWangTong.writeLog("\t小灵通 出现严重错误线程正在关闭");
		}
		finally	{
				if (!(server.isClosed()))
				{
					try
					{
					server.close();
					}
					catch(IOException e)
					{
					}
				}
	 		}

 	}
 public void Xiao_Ling_Tong_exit()
 	{
 		exit_bool = true ;
 	}
 	
}
				

⌨️ 快捷键说明

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