📄 cmppclient.java
字号:
import java.lang.*;
import java.net.*;
import java.io.*;
import CMPPLog;
import CMPPException;
import CMPPUtility;
import CMPPThread;
import CMPPSynchronizedIO;
import CMPPAsynchronizedIO;
import CMPPConnect;
import CMPPConnectResponse;
import CMPPTerminate;
import CMPPTerminateResponse;
import CMPPActiveTest;
import CMPPActiveTestResponse;
import CMPPClientRequest;
import CMPPClientResponse;
public class CMPPClient extends CMPPThread
{
final static int DEFAULT_TIMEOUT = 60000;
final static int MAX_ERROR_COUNT = 20;
//连接Socket
Socket m_sktClient = null;
//通讯层
CMPPSynchronizedIO m_synio = null;
CMPPAsynchronizedIO m_asynio = null;
public CMPPClient(Socket sktClient)
throws IOException, CMPPException
{
if(sktClient == null)
{
throw new CMPPException("CMPPClient.CMPPClient : null socket !");
}
m_sktClient = sktClient;
//生成一个同步IO
m_synio = new CMPPSynchronizedIO(m_sktClient);
//生成一个异步IO处理器
m_asynio = new CMPPAsynchronizedIO(m_synio);
}
public void startup()
{
try
{
CMPPClientRequest request = new CMPPClientRequest(m_synio,m_asynio,null);
if(request.login())
//登陆成功
{
m_asynio.startup();
super.startup();
CMPPLog.log("CMPPClient.startup : cmpp client startup !",
CMPPLog.LOG_CMPP_CLIENT);
return;
}
}
catch(Exception e)
{
CMPPLog.log(e.getMessage(),
CMPPLog.LOG_CMPP_CLIENT | LogRequest.LOG_EXCEPTION);
}
CMPPLog.log("CMPPClient.startup : cmpp client startup failed !",
CMPPLog.LOG_CMPP_CLIENT);
}
public void shutdown()
{
try
{
//关闭线程
super.shutdown();
//关闭异步IO
m_asynio.shutdown();
//退出
CMPPClientRequest request = new CMPPClientRequest(m_synio,m_asynio,null);
request.logout();
//关闭同步IO
m_synio.close();
//关闭socket
m_sktClient.close();
}
catch(Exception e)
{
CMPPLog.log(e.getMessage(),
CMPPLog.LOG_CMPP_CLIENT | LogRequest.LOG_EXCEPTION);
}
CMPPLog.log("CMPPClient.shutdown : cmpp client shutdown !",
CMPPLog.LOG_CMPP_CLIENT);
}
public void run()
{
long lStartTime = System.currentTimeMillis();
try
{
m_nStatus = THREAD_RUNNING;
while(isRunning() && m_asynio.isRunning())
{
//检查异步IO的错误状况
if(m_asynio.m_nErrorCount > MAX_ERROR_COUNT)
{
//退出连接
throw new CMPPException("CMPPClient.run : too much asynchronized io errors !");
}
//CMPP定时检测
if((System.currentTimeMillis() - lStartTime) > DEFAULT_TIMEOUT)
{
lStartTime = System.currentTimeMillis();
//异步activetest
CMPPClientRequest request = new CMPPClientRequest(m_synio,m_asynio,null);
request.activetest();
}
//查看数据包
CMPPPacket packet = m_asynio.peer();
if(packet != null && CMPPCommandID.isRequest(packet.command_id))
{
//读取数据包。
packet = m_asynio.read();
//服务器异步响应
CMPPClientResponse response = new CMPPClientResponse(m_synio,m_asynio,packet);
response.startup();
}
if(m_asynio.m_bTerminate)
//通讯需要中断
{
break;
}
}
}
catch(Exception e)
{
CMPPLog.log(e.getMessage(),
CMPPLog.LOG_CMPP_CLIENT | LogRequest.LOG_EXCEPTION);
CMPPLog.log("CMPPClient.run : unexpected exit !",
CMPPLog.LOG_CMPP_CLIENT | LogRequest.LOG_EXCEPTION);
}
m_nStatus = THREAD_STOPPED;
CMPPLog.log("CMPPClient.run : thread stopped !",
CMPPLog.LOG_CMPP_CLIENT | CMPPLog.LOG_EXCEPTION);
}
public void activetest()
throws CMPPException
{
CMPPClientRequest request = new CMPPClientRequest(m_synio,m_asynio,null);
request.activetest();
}
public void submit()
throws CMPPException
{
CMPPClientRequest request = null;
CMPPSubmit submit1 = new CMPPSubmit(++ m_asynio.m_nSequenceID);
//填写相关数据
submit1.makeAscIISubmit(1,2,"13910139946","You need NOT reply, just delete it ! I am using CMPPSimulator ver 1.2 for distributing test ! Sorry for disturb !");
submit1.addDestTerminalID("13901023474");
submit1.addDestTerminalID("13901032764");
request = new CMPPClientRequest(m_synio,m_asynio,submit1);
request.start();
CMPPSubmit submit2 = new CMPPSubmit(++ m_asynio.m_nSequenceID);
//填写相关数据
submit2.makeAscIISubmit(2,2,"13910139946","You need NOT reply, just delete it ! This is the second sms ! I am testing its distributing function.Sorry for disturb !");
submit2.addDestTerminalID("13901023474");
submit2.addDestTerminalID("13901032764");
request = new CMPPClientRequest(m_synio,m_asynio,submit2);
request.start();
}
public void query()
throws CMPPException
{
CMPPQuery query = new CMPPQuery(++ m_asynio.m_nSequenceID);
query.time = "20011011";
query.query_type = 0;
query.query_code = " ";
CMPPClientRequest request = new CMPPClientRequest(m_synio,m_asynio,query);
request.start();
}
public void cancel()
throws CMPPException
{
CMPPCancel cancel = new CMPPCancel(++ m_asynio.m_nSequenceID);
cancel.msg_id = 1;
CMPPClientRequest request = new CMPPClientRequest(m_synio,m_asynio,cancel);
request.start();
}
public static void main(String[] args)
{
System.out.println("www.simpleteam.com CMPPClient Simulator (ver 1.2) free released !");
if(args.length != 1)
{
System.out.println("Usage Example: java CMPPClient 192.168.0.188");
return;
}
System.out.println("\tCommand List:");
System.out.println("\t\tconnect -- send connect request to CMPPServer.");
System.out.println("\t\tsubmit -- send submit request to CMPPServer.");
System.out.println("\t\tcancel -- send cancel request to CMPPServer.");
System.out.println("\t\tquery -- send query request to CMPPServer.");
System.out.println("\t\tactivetest -- send activetest request to CMPPServer.");
System.out.println("\t\tterminate -- send terminate request to CMPPServer.");
System.out.println("\t\tdeliver -- receive deliver request from CMPPServer.");
System.out.println("\tPress Ctrl+C to exit !");
try
{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
//打开日志文件
FileLog.openLog("client.log");
//CMPP日志请求
//CMPPLog.logRequests(CMPPLog.LOG_EXCEPTION | CMPPLog.LOG_ISVALID_METHOD | CMPPLog.LOG_CMPP_CLIENT);
CMPPLog.logRequests(CMPPLog.LOG_ALL);
//取得地址
InetAddress address = InetAddress.getByName(args[0]);
//打开Socket
Socket socket = new Socket(address,7809);
//建立客户端
CMPPClient client = new CMPPClient(socket);
//启动客户端
client.startup();
if(client.isRunning())
//运行客户端
{
CMPPLog.log("CMPPClient.main : CMPPClient startup !",
CMPPLog.LOG_CMPP_CLIENT | LogRequest.LOG_EXCEPTION);
String strLine;
while(client.isRunning() && (strLine = br.readLine()) != null)
{
if(strLine.trim().equals("activetest"))
{
client.activetest();
}
else if(strLine.trim().equals("terminate"))
{
break;
}
else if(strLine.trim().equals("submit"))
{
client.submit();
}
else if(strLine.trim().equals("query"))
{
client.query();
}
else if(strLine.trim().equals("cancel"))
{
client.cancel();
}
else
{
}
}
}
//客户端关闭
client.shutdown();
}
catch(Exception e)
{
CMPPLog.log(e.getMessage(),
CMPPLog.LOG_CMPP_CLIENT | LogRequest.LOG_EXCEPTION);
CMPPLog.log("CMPPClient.main : unexpected exit",
CMPPLog.LOG_CMPP_CLIENT | LogRequest.LOG_EXCEPTION);
}
CMPPLog.log("CMPPClient.main : cmpp client shutdown !",
CMPPLog.LOG_CMPP_CLIENT | LogRequest.LOG_EXCEPTION);
//关闭日志文件
FileLog.closeLog();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -