?? sgip.h
字號:
/*++
版權(quán)所有(C),清華深訊公司
模塊名:
sgip.h
摘要:
短消息網(wǎng)關(guān)互聯(lián)協(xié)議(SGIPv1.2)
作者:
周輝球
環(huán)境:
Win32平臺和UNIX類平臺, 通過預(yù)編譯宏定義決定
修改歷史:
--*/
#ifndef _SGIP_H_
#define _SGIP_H_
#ifdef _WIN32
#ifndef __PROC_C__
#ifdef _WINSOCKAPI_
#include <winsock.h>
#else
#include <winsock2.h>
#endif
#include <memory.h>
#include <string.h>
#include <stdio.h>
#include <time.h>
#ifdef _WINSOCKAPI_
#pragma comment(lib, "wsock32.lib")
#else
#pragma comment(lib, "ws2_32.lib")
#endif
#endif
#ifdef __cplusplus
extern "C" {
#endif
#else
#ifndef __PROC_C__
#include <sys/types.h>
#include <netdb.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
#include <sys/time.h>
#include <pthread.h>
#include <signal.h>
#include <iconv.h>
#endif
#ifndef SOCKET
#define SOCKET int
#define INVALID_SOCKET (SOCKET)(~0)
#define SOCKET_ERROR (-1)
#define closesocket close
#endif
#endif
/* 消息ID值定義, 所有宏定義前均加上SGIP_前綴. */
#define SGIP_BIND 0x00000001
#define SGIP_BIND_RESP 0x80000001
#define SGIP_UNBIND 0x00000002
#define SGIP_UNBIND_RESP 0x80000002
#define SGIP_SUBMIT 0x00000003
#define SGIP_SUBMIT_RESP 0x80000003
#define SGIP_DELIVER 0x00000004
#define SGIP_DELIVER_RESP 0x80000004
#define SGIP_REPORT 0x00000005
#define SGIP_REPORT_RESP 0x80000005
#define SGIP_ADDSP 0x00000006
#define SGIP_ADDSP_RESP 0x80000006
#define SGIP_MODIFYSP 0x00000007
#define SGIP_MODIFYSP_RESP 0x80000007
#define SGIP_DELETESP 0x00000008
#define SGIP_DELETESP_RESP 0x80000008
#define SGIP_QUERYROUTE 0x00000009
#define SGIP_QUERYROUTE_RESP 0x80000009
#define SGIP_ADDTELESEG 0x0000000A
#define SGIP_ADDTELESEG_RESP 0x8000000A
#define SGIP_MODIFYTELESEG 0x0000000B
#define SGIP_MODIFYTELESEG_RESP 0x8000000B
#define SGIP_DELETETELESEG 0x0000000C
#define SGIP_DELETETELESEG_RESP 0x8000000C
#define SGIP_ADDSMG 0x0000000D
#define SGIP_ADDSMG_RESP 0x8000000D
#define SGIP_MODIFYSMG 0x0000000E
#define SGIP_MODIFYSMG_RESP 0x8000000E
#define SGIP_DELETESMG 0x0000000F
#define SGIP_DELETESMG_RESP 0x8000000E
#define SGIP_CHECKUSER 0x00000010
#define SGIP_CHECKUSER_RESP 0x80000010
#define SGIP_USERRPT 0x00000011
#define SGIP_USERRPT_RESP 0x80000011
#define SGIP_ENQUIRELINK 0x10000001
#define SGIP_ENQUIRELINK_RESP 0x10000010
/* SGIP包的最大大小 */
#define SGIP_PDU_SIZE 2408
typedef struct _SGIP_BODY_BIND {
unsigned char LoginType;
char LoginName[16 + 1];
char LoginPassword[16 + 1];
char Reserve[8 + 1];
} SGIP_BODY_BIND, *PSGIP_BODY_BIND;
typedef struct _SGIP_BODY_BIND_RESP {
unsigned char Result;
char Reserve[8 + 1];
} SGIP_BODY_BIND_RESP, *PSGIP_BODY_BIND_RESP;
typedef struct _SGIP_BODY_SUBMIT {
char SPNumber[21 + 1];
char ChargeNumber[21 + 1];
unsigned char UserCount;
char UserNumber[100][21 + 1];
char CorpId[5 + 1];
char ServiceType[10 + 1];
unsigned char FeeType;
char FeeValue[6 + 1];
char GivenValue[6 + 1];
unsigned char AgentFlag;
unsigned char MOrelatetoMTFlag;
unsigned char Priority;
char ExpireTime[16 + 1];
char ScheduleTime[16 + 1];
unsigned char ReportFlag;
unsigned char TP_pid;
unsigned char TP_udhi;
unsigned char MessageCoding;
unsigned char MessageType;
unsigned long MessageLength;
char MessageContent[160 + 1];
char Reserve[8 + 1];
} SGIP_BODY_SUBMIT, *PSGIP_BODY_SUBMIT;
typedef struct _SGIP_BODY_SUBMIT_RESP {
unsigned char Result;
char Reserve[8 + 1];
} SGIP_BODY_SUBMIT_RESP, *PSGIP_BODY_SUBMIT_RESP;
typedef struct _SGIP_BODY_DELIVER {
char UserNumber[21 + 1];
char SPNumber[21 + 1];
unsigned char TP_pid;
unsigned char TP_udhi;
unsigned char MessageCoding;
unsigned long MessageLength;
char MessageContent[160 + 1];
char Reserve[8 + 1];
} SGIP_BODY_DELIVER, *PSGIP_BODY_DELIVER;
typedef struct _SGIP_BODY_DELIVER_RESP {
unsigned char Result;
char Reserve[8 + 1];
} SGIP_BODY_DELIVER_RESP, *PSGIP_BODY_DELIVER_RESP;
typedef struct _SGIP_BODY_REPORT {
unsigned long SubmitSequenceNumber[3];
unsigned char ReportType;
char UserNumber[21 + 1];
unsigned char State;
unsigned char ErrorCode;
char Reserve[8 + 1];
} SGIP_BODY_REPORT, *PSGIP_BODY_REPORT;
typedef struct _SGIP_BODY_REPORT_RESP {
unsigned char Result;
char Reserve[8 + 1];
} SGIP_BODY_REPORT_RESP, *PSGIP_BODY_REPORT_RESP;
typedef union _SGIP_BODY {
SGIP_BODY_BIND bind;
SGIP_BODY_BIND_RESP bind_resp;
SGIP_BODY_SUBMIT submit;
SGIP_BODY_SUBMIT_RESP submit_resp;
SGIP_BODY_DELIVER deliver;
SGIP_BODY_DELIVER_RESP deliver_resp;
SGIP_BODY_REPORT report;
SGIP_BODY_REPORT_RESP report_resp;
} SGIP_BODY, *PSGIP_BODY;
typedef struct _SGIP_MSG {
unsigned long MessageLength;
unsigned long CommandID;
unsigned long SequenceNumber[3];
SGIP_BODY body;
} SGIP_MSG, *PSGIP_MSG;
/* 協(xié)議公共接口函數(shù) */
/* 打包發(fā)送 */
int sgipBind(SOCKET sockfd,
const unsigned long *SequenceNumber, const SGIP_BODY_BIND *pBody);
int sgipBindResp(SOCKET sockfd,
const unsigned long *SequenceNumber, const SGIP_BODY_BIND_RESP *pBody);
int sgipUnbind(SOCKET sockfd,
const unsigned long *SequenceNumber);
int sgipUnbindResp(SOCKET sockfd,
const unsigned long *SequenceNumber);
int sgipSubmit(SOCKET sockfd,
const unsigned long *SequenceNumber, const SGIP_BODY_SUBMIT *pBody);
int sgipSubmitResp(SOCKET sockfd,
const unsigned long *SequenceNumber, const SGIP_BODY_SUBMIT_RESP *pBody);
int sgipDeliver(SOCKET sockfd,
const unsigned long *SequenceNumber, const SGIP_BODY_DELIVER *pBody);
int sgipDeliverResp(SOCKET sockfd,
const unsigned long *SequenceNumber, const SGIP_BODY_DELIVER_RESP *pBody);
int sgipReport(SOCKET sockfd,
const unsigned long *SequenceNumber, const SGIP_BODY_REPORT *pBody);
int sgipReportResp(SOCKET sockfd,
const unsigned long *SequenceNumber, const SGIP_BODY_REPORT_RESP *pBody);
int sgipEnquireLink(SOCKET sockfd,
const unsigned long *SequenceNumber);
int sgipEnquireLinkResp(SOCKET sockfd,
const unsigned long *SequenceNumber);
/* 解包 */
int sgipDecode(const char *pszPDU, SGIP_MSG *pMsg);
#ifdef _WIN32
#ifdef __cplusplus
}
#endif
#endif
#endif /* _SGIP_H_ */
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -