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

📄 cmppserverresponse.java

📁 短信网关发送接受平台。
💻 JAVA
字号:
import java.lang.*;
import java.net.*;
import java.io.*;

import CMPPResponse;

import CMPPTerminate;
import CMPPTerminateResponse;

import CMPPConnect;
import CMPPConnectResponse;

import CMPPSubmit;
import CMPPSubmitResponse;

import CMPPCancel;
import CMPPCancelResponse;

import CMPPQuery;
import CMPPQueryResponse;


public class CMPPServerResponse extends CMPPResponse
{
	CMPPPacket m_packet = null;

	public CMPPServerResponse(CMPPSynchronizedIO synio,CMPPAsynchronizedIO asynio,CMPPPacket packet)
		throws CMPPException
	{
		super(synio,asynio);
		m_packet = packet;
	}
	
	protected void OnTerminateResponse(CMPPTerminateResponse response,CMPPTerminate terminate)
	{
		m_asynio.m_bTerminate = true;
	}

	protected void OnConnectResponse(CMPPConnectResponse response,CMPPConnect connect)
	{
		response.status = 0;
		response.authenticator_ismg = "0000000000000000";
		response.version = 0x12;
		
		//检查有效性
		if(!connect.isValid())
		{
			//消息结构错
			response.status = 1;
		}
		//检查连接许可
		else if(!connect.source_addr.equals("888888"))
		{
			//非法的SP_ID
			response.status = 2;
		}
		//检查认证
		else if(!connect.authenticator_sp.equals("0123456789abcdef"))
		{
			//SP认证错
			response.status = 3;
		}
		else if(connect.version != 0x12)
		//检查版本
		{
			//版本太高
			response.status = 4;
		}
		else
		{
			//正确回答
			response.authenticator_ismg = "connection is ok";
		}
	}

	protected void OnSubmitResponse(CMPPSubmitResponse response,CMPPSubmit submit)
	{
		response.msg_id = submit.msg_id;
		response.result = 0;//正确
	}

	protected void OnCancelResponse(CMPPCancelResponse response,CMPPCancel cancel)
	{
		response.success_id = 0;//成功
	}

	protected void OnQueryResponse(CMPPQueryResponse response,CMPPQuery query)
	{
		response.time = query.time;
		response.query_type = query.query_type;
		response.query_code = query.query_code;
	}

	public void run()
	{
		m_nStatus = THREAD_RUNNING;
		
		try
		{
			if(isRunning() && m_packet != null)
			{
				//处理CMPP请求
				if(m_packet.command_id == CMPPCommandID.CMPP_TERMINATE)
				//CMPP_TERMINATE
				{
					CMPPTerminate terminate = new CMPPTerminate(m_packet);
					
					CMPPTerminateResponse response = response(terminate);
					if(response != null)
					{
						//同步输出响应
						//通讯马上就要关闭,必须同步输出!
						m_synio.write(response);
					}
					else
					{
						CMPPLog.log("CMPPServerResponse.run : failure on terminate response !",
							CMPPLog.LOG_CMPP_SERVER_RESPONSE);
					}
				}
				else if(m_packet.command_id == CMPPCommandID.CMPP_CONNECT)
				//CMPP_CONNECT
				{
					CMPPConnect connect = new CMPPConnect(m_packet);
					
					CMPPConnectResponse response = response(connect);
					if(response == null || !m_asynio.write(response))
					{
						m_asynio.m_nErrorCount ++;
						m_asynio.m_bAuthenticated = false;
						
						CMPPLog.log("CMPPServerResponse.run : failure on connect response !",
							CMPPLog.LOG_CMPP_SERVER_RESPONSE);
					}
					else if(response.status == 0)
					{
						m_asynio.m_bAuthenticated = true;
					}
					else
					{
						m_asynio.m_bAuthenticated = false;
					}
				}
				else if(m_asynio.m_bAuthenticated)
				//已经效验有效
				{
					if(m_packet.command_id == CMPPCommandID.CMPP_ACTIVETEST)
					//CMPP_ACTIVETEST
					{
						CMPPActiveTest activetest = new CMPPActiveTest(m_packet);
						
						CMPPActiveTestResponse response = response(activetest);
						if(response == null || !m_asynio.write(response))
						{
							m_asynio.m_nErrorCount ++;
							
							CMPPLog.log("CMPPServerResponse.run : failure on activetest response !",
								CMPPLog.LOG_CMPP_SERVER_RESPONSE);
						}
					}
					else if(m_packet.command_id == CMPPCommandID.CMPP_SUBMIT)
					//CMPP_SUBMIT
					{
						CMPPSubmit submit = new CMPPSubmit(m_packet);
						
						CMPPSubmitResponse response = response(submit);
						if(response == null || !m_asynio.write(response))
						{
							m_asynio.m_nErrorCount ++;
							
							CMPPLog.log("CMPPServerResponse.run : failure on sumit response !",
								CMPPLog.LOG_CMPP_SERVER_RESPONSE);
						}
					}
					else if(m_packet.command_id == CMPPCommandID.CMPP_CANCEL)
					//CMPP_CANCEL
					{
						CMPPCancel cancel = new CMPPCancel(m_packet);
						
						CMPPCancelResponse response = response(cancel);
						if(response == null || !m_asynio.write(response))
						{
							m_asynio.m_nErrorCount ++;
							
							CMPPLog.log("CMPPServerResponse.run : failure on cancel response !",
								CMPPLog.LOG_CMPP_SERVER_RESPONSE);
						}
					}
					else if(m_packet.command_id == CMPPCommandID.CMPP_QUERY)
					//CMPP_QUERY
					{
						CMPPQuery query = new CMPPQuery(m_packet);
						
						CMPPQueryResponse response = response(query);
						if(response == null || !m_asynio.write(response))
						{
							m_asynio.m_nErrorCount ++;
							
							CMPPLog.log("CMPPServerResponse.run : failure on query response !",
								CMPPLog.LOG_CMPP_SERVER_RESPONSE);
						}
					}
					else
					//其他命令
					{
						CMPPLog.log("CMPPServerResponse.run : unhandled request !",
							CMPPLog.LOG_CMPP_SERVER_RESPONSE);
					}
				}
				else
				{
					CMPPLog.log("CMPPServerResponse.run : unauthorized request !",
						CMPPLog.LOG_CMPP_SERVER_RESPONSE);
				}
			}
		}
		catch(Exception e)
		{
			CMPPLog.log(e.getMessage(),
				CMPPLog.LOG_CMPP_SERVER_RESPONSE | LogRequest.LOG_EXCEPTION);
			CMPPLog.log("CMPPServerResponse.run : unexpected exit !",
				CMPPLog.LOG_CMPP_SERVER_RESPONSE | LogRequest.LOG_EXCEPTION);
		}
		
		m_nStatus = THREAD_STOPPED;
	}	
}

⌨️ 快捷键说明

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