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

📄 cmppclient.java

📁 短信网关发送接受平台。
💻 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 + -