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 + -
显示快捷键?