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

📄 smpp_s.h

📁 SMPP SERVER 可以回复ACK及状态报告
💻 H
字号:
//---------------------------------------------------------------------------

#ifndef Smpp_SH
#define Smpp_SH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ScktComp.hpp>
//---------------------------------------------------------------------------
#define cmd_generic_nack 			0x80000000
#define cmd_bind_receiver 			0x00000001
#define cmd_bind_receiver_resp 		0x80000001
#define cmd_bind_transmitter 		0x00000002
#define cmd_bind_transmitter_resp 	0x80000002
#define cmd_query_sm 				0x00000003
#define cmd_query_sm_resp 			0x80000003
#define cmd_submit_sm 				0x00000004
#define cmd_submit_sm_resp			0x80000004
#define cmd_deliver_sm 				0x00000005
#define cmd_deliver_sm_resp 		0x80000005
#define cmd_unbind					0x00000006
#define cmd_unbind_resp				0x80000006
#define cmd_replace_sm 				0x00000007
#define cmd_replace_sm_resp 		0x80000007
#define cmd_cancel_sm 				0x00000008
#define cmd_cancel_sm_resp	 		0x80000008
#define cmd_bind_transceiver 		0x00000009
#define cmd_bind_transceiver_resp 	0x80000009
#define cmd_outbind 				0x0000000B
#define cmd_enquire_link 			0x00000015
#define cmd_enquire_link_resp 		0x80000015
#define cmd_submit_multi 			0x00000021
#define cmd_submit_multi_resp 		0x80000021
#define cmd_alert_notification 		0x00000102
#define cmd_data_sm					0x00000103
#define cmd_data_sm_resp 			0x80000103




#define ESME_ROK 			0x00000000		// No Error
#define ESME_RINVMSGLEN			0x00000001		// Message Length is invalid
#define ESME_RINVCMDLEN			0x00000002 		// Command Length is invalid
#define ESME_RINVCMDID 			0x00000003 		// Invalid Command ID
#define ESME_RINVBNDSTS			0x00000004		// Incorrect BIND Status for given command
#define ESME_RALYBND 			0x00000005 		// ESME Already in Bound State
#define ESME_RINVPRTFLG			0x00000006		// Invalid Priority Flag
#define ESME_RINVREGDLVFLG		0x00000007		// Invalid Registered Delivery Flag
#define ESME_RSYSERR 			0x00000008 		// System Error
#define ESME_RINVSRCADR			0x0000000A 		// Invalid Source Address
#define ESME_RINVDSTADR			0x0000000B 		// Invalid Dest Addr
#define ESME_RINVMSGID 			0x0000000C 		// Message ID is invalid
#define ESME_RBINDFAIL 			0x0000000D 		// Bind Failed
#define ESME_RINVPASWD 			0x0000000E 		// Invalid Password
#define ESME_RINVSYSID 			0x0000000F		// Invalid System ID
#define ESME_RCANCELFAIL		0x00000011 		// Cancel SM Failed
#define ESME_RREPLACEFAIL		0x00000013 		// Replace SM Failed
#define ESME_RMSGQFUL 			0x00000014 		// Message Queue Full
#define ESME_RINVSERTYP			0x00000015 		// Invalid Service Type
#define ESME_RINVNUMDESTS		0x00000033		// Invalid number of destinations
#define ESME_RINVDLNAME 		0x00000034		// Invalid Distribution List name
#define ESME_RINVDESTFLAG 		0x00000040		// Destination flag is invalid (submit_multi)
#define ESME_RINVSUBREP 		0x00000042		// Invalid 'submit with replace' request	 (i.e. submit_sm with replace_if_present_flag set)
#define ESME_RINVESMCLASS 		0x00000043 		// Invalid esm_class field data
#define ESME_RCNTSUBDL 			0x00000044 		// Cannot Submit to Distribution List
#define ESME_RSUBMITFAIL 		0x00000045 		// submit_sm or submit_multi failed
#define ESME_RINVSRCTON 		0x00000048		// Invalid Source address TON
#define ESME_RINVSRCNPI 		0x00000049		// Invalid Source address NPI
#define ESME_RINVDSTTON			0x00000050		// Invalid Destination address TON
#define ESME_RINVDSTNPI 		0x00000051 		// Invalid Destination address NPI
#define ESME_RINVSYSTYP 		0x00000053 		// Invalid system_type field
#define ESME_RINVREPFLAG 		0x00000054		// Invalid replace_if_present flag
#define ESME_RINVNUMMSGS 		0x00000055		// Invalid number of messages
#define ESME_RTHROTTLED 		0x00000058 		// Throttling error (ESME has exceeded allowed message limits)
#define ESME_RINVSCHED 			0x00000061 		// Invalid Scheduled Delivery Time
#define ESME_RINVEXPIRY 		0x00000062 		// Invalid message validity period (Expiry time)
#define ESME_RINVDFTMSGID 		0x00000063 		// Predefined Message Invalid or Not Found
#define ESME_RX_T_APPN 			0x00000064 		// ESME Receiver Temporary App Error Code
#define ESME_RX_P_APPN 			0x00000065 		// ESME Receiver Permanent App Error Code
#define ESME_RX_R_APPN 			0x00000066 		// ESME Receiver Reject Message Error Code
#define ESME_RQUERYFAIL 		0x00000067 		// query_sm request failed
#define ESME_RINVOPTPARSTREAM	0x000000C0 		// Error in the optional part of the PDU Body.
#define ESME_ROPTPARNOTALLWD 	0x000000C1 		// Optional Parameter not allowed
#define ESME_RINVPARLEN 		0x000000C2 		// Invalid Parameter Length.
#define ESME_RMISSINGOPTPARAM 	0x000000C3 		// Expected Optional Parameter missing
#define ESME_RINVOPTPARAMVAL 	0x000000C4 		// Invalid Optional Parameter Value
#define ESME_RDELIVERYFAILURE 	0x000000FE 		// Delivery Failure (used for data_sm_resp)
#define ESME_RUNKNOWNERR 		0x000000FF 		// Unknown Error



class TSmpp : public TForm
{
__published:	// IDE-managed Components
        TServerSocket *ServerSocket1;
        TButton *Button1;
        TListBox *ListBox1;
        void __fastcall FormCreate(TObject *Sender);
        void __fastcall ServerSocket1ClientRead(TObject *Sender,
          TCustomWinSocket *Socket);
        void __fastcall ServerSocket1ClientConnect(TObject *Sender,
          TCustomWinSocket *Socket);
        void __fastcall ServerSocket1ClientError(TObject *Sender,
          TCustomWinSocket *Socket, TErrorEvent ErrorEvent,
          int &ErrorCode);
        void __fastcall ServerSocket1ClientDisconnect(TObject *Sender,
          TCustomWinSocket *Socket);
        void __fastcall Button1Click(TObject *Sender);
private:	// User declarations





typedef struct
{
    int     Command_Length;                     //消息包的长度,包括此字段
    int     Command_ID;                         //消息类型
    int     Command_status;                     //成功与否
    int     Sequence_No;                        //消息的序列号
}SMPP_Header;



typedef struct
{
	char	service_type[6];		//最大6	C_OctetString	保留,必须设为0
	BYTE	source_address_ton;		//	1	Integer	源地址编码类型
	BYTE	source_address_npi;		//	1	Integer	源地址编码方案
	char	source_address[21];		//	最大21	C_DecString	源地址
	BYTE	dest_address_ton;		//	1	Integer	目的地址编码类型
	BYTE	dest_address_npi;		//	1	Integer	目的地址编码方案
	char	destination_address[21];	//	最大21	C_DecString	目的地址
	BYTE	esm_class;				//	1	Integer	短消息类型
	BYTE	protocol_ID;			//	1	integer	GSM协议类型
	BYTE	priority_flag;			//	1	integer	优先级
	char	schedule_delivery_time[17];	//	最大17	C_StringTime	计划下发短消息的时间
	char	validity_peroid[17];		//	最大17	C_StringTime	短消息的最后有效期限
	BYTE	registered_delivery_flag;	//	1	integer	注册短消息标志
	BYTE	replace_if_present_flag;	//		1	integer	替换短消息标志。
	BYTE	data_coding;				//	1	integer	数据编码方案
	BYTE	sm_default_msg_id;			//	1	integer	预定义短消息ID
	BYTE	sm_length;					//	1	integer	短消息的长度
	char	short_message_text[161];	//	最大161	可变	短消息数据内容

}	SMPP_SUBMIT_DEF, SMPP_DELIVER_DEF;

typedef struct
{
	char	service_type;			//最大6	C_OctetString	保留,必须设为0
	BYTE	source_address_ton;		//	1	Integer	源地址编码类型
	BYTE	source_address_npi;		//	1	Integer	源地址编码方案
	char	source_address[6];		//	最大21	C_DecString	源地址
	BYTE	dest_address_ton;		//	1	Integer	目的地址编码类型
	BYTE	dest_address_npi;		//	1	Integer	目的地址编码方案
	char	destination_address[12];	//	最大21	C_DecString	目的地址
	BYTE	esm_class;				//	1	Integer	短消息类型
	BYTE	protocol_ID;			//	1	integer	GSM协议类型
	BYTE	priority_flag;			//	1	integer	优先级
	char	schedule_delivery_time;	//	最大17	C_StringTime	计划下发短消息的时间
	char	validity_peroid;		//	最大17	C_StringTime	短消息的最后有效期限
	BYTE	registered_delivery_flag;	//	1	integer	注册短消息标志
	BYTE	replace_if_present_flag;	//		1	integer	替换短消息标志。
	BYTE	data_coding;				//	1	integer	数据编码方案
	BYTE	sm_default_msg_id;			//	1	integer	预定义短消息ID
	BYTE	sm_length;					//	1	integer	短消息的长度
	char	short_message_text[161];	//	最大161	可变	短消息数据内容

}	SMPP_GDUNICOM_SUBMIT_DEF;
/*
typedef struct STATUS {
	char		id[10];
	char		sub[3];
	char		dlvrd[3];
	char		submitdate[10];
	char		donedate[10];
	char		stat[7];
	char		err[3];
	char		text[20];
} SMPP_STATUS_REPORT_DEF;
*/





       void  ConnGUIP();
       void  loadConf();
       void  SendBuff(SMPP_Header *head,char* buff,int len);
       char*   submit_sm_resp(char *buff);

public:		// User declarations
        __fastcall TSmpp(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TSmpp *Smpp;
//---------------------------------------------------------------------------
#endif

⌨️ 快捷键说明

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