亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sgipapi.h

?? SMAL是short message abstract library的縮寫,是由風起水流軟件工作室(www.zealware.com)開發的一個支持短信網關系統開發的C++底層抽象接口庫
?? H
?? 第 1 頁 / 共 2 頁
字號:
/**
 *	文件名稱:	SGIP.h
 *	實現功能:	中國聯通短消息業務聯網協議1.2版(sgip1.2 最新0213升級版)頭文件.
 *	文件作者:	PrinceToad(范圣剛,北京風起水流軟件工作室)
 *	軟件聲明:	免費提供SP短消息網關開發接口庫下載使用(CMPP3.0,SGIP1.2,CMPP2.0)
 *	聯系方式:	
 *				Homepage:Http://www.zealware.com
 *				MSN:	princetoad2003@hotmail.com
 *				OICQ:	50506711
 *				Email:	princetoad@gmail.com
 *				PhoneNo:010-13901168061
 *	軟件版本:
 *				Revision V1.70 06/22/2007
 *					1.采用類封裝方式實現SGIPAPI.
 *					2.去掉了MFC類庫的使用.
 *
 *				V1.61 May.07.06
 *					1.修正了上行連接線程安全的一個Bug.
 *
 *				V1.6 Mar.25.06
 *					1.加入了是否對網關登錄SP的用戶名口令進行驗證的配置和參數。
 *					2.加入了對網關連接SP的最大連接數進行配置的參數。
 *					3.增加了輸出調試日志的接口。
 *					4.增加了允許設定線城池的工作線程數的參數配置。
 *					5.支持輸出SMG到網關的連接的連接數,SOCKET句柄,和遠程端口(可以在外部關閉網關連接).
 *					6.回調函數返回值改為int.(允許在回調函數中返回值)
 *					7.修正了一些BUG.
 *
 *				V1.42 Jul.30.04
 *					1.不對SUBMIT消息的MSGCONTENT長度作限制,原來的長度限制160,現在只要整個消息包不超
 *					過2K就可以.
 *
 *				V1.41 Jul.30.04
 *					1.加入了對MO連接遠程服務器IP地址的判斷,防止非法攻擊!
 *					2.徹底修正了MT斷開重連,再發消息的Bug,MTRESP不會再返回255的錯誤.
 *
 *				V1.4  Jul.19.04
 *					1.修正了一個返回函數指針錯誤的問題。.(Special Thanks mate.)
 *					2.增加了了程序啟動模式,在Start函數里,當指定nLocalPort = -1時,不建立本地監聽,只執行發送模塊;
 *					  當指定nPeerPort = -1時,只進行監聽,接收MO消息,不建立同網關的連接.
 *				V1.36 Jun.07.04
 *					1.修改了多連接分配時候的一個Bug,該Bug能夠導致在流量比較大的時候丟失MT消息。
 *					2.去除了除試用版過期的以外的其他消息提示對話框。
 *					3.Start函數里面加了一個參數fOutputDebugInfo,用來指示是否輸出調試信息,
 *					  如果輸出的話,DLL會在當前目錄下建立一個文本文件debug.log,輸出DLL的相關信息,
 *					  用作調試,出現錯誤情況時可以查看該文件。
 *				V1.34 Apr.13.04
 *					1.修改了接收超時導致丟失MO消息的問題。
 *				V1.33 Mar.30.04
 *					1.根據聯通的最新修改,LinkId字段不作為兩個整數來處理,直接作為8字節的字符串處理。
 *				V1.32 Mar.23.04
 *					1.修改了連接中斷后,重連的一個Bug.
 *				V1.3  Mar.07.04
 *					1.修改了MT消息的發送方式,發送方式由原來的短連接(即一條消息建立一次連接)改為
 *					  現在的長連接,提高了發送效率,減輕了網關負擔。
 *					2.Start()函數增加了一個參數,允許用戶自定義同網關建立的連接數,默認是3
 *					  (網關連接數最好不要超過數值N, N = CPU個數*2 + 2)。
 *				V1.28 Feb.26.04
 *					1.還是根據《SGIPV1.2協議適應性修改0120(SP分冊)》作了相應修改。
 *					2.根據協議變更,修改了Submit, Deliver, deliverstr結構體的定義,增加或者修改了Reserved,linkid字段。
 *					3.修改了MO,MT消息收發函數.
 *				V1.27 Feb.16.04
 *					1.根據《SGIPV1.2協議適應性修改0120(SP分冊)》作了相應修改.
 *				V1.26 Jan.27.04
 *					1.修正了MTError時,mt_err結構提沒有帶回DateTime的錯誤。	
 *				V1.25 Dec.22.03
 *					1.在Submit函數中返回了submit消息包序列號中的時間戳(與Reponse和Report中的時間戳是對應的),
 *					  通過時間戳與序列號的結合徹底解決了序列號唯一對應的問題(哪怕是系統重新啟動).
 *
 *				V1.24 Dec.04.03
 *					1.更正了在接收消息包時未給ReportStr中的nSubmitSeqId字段賦值的錯誤。
 *					2.更正了MTError返回時不能帶回序列號的問題.	
 *					3.在ReportStr字段中加入新的字段unsigned int nSubmitDateTime,用于保存更加詳細的Report內容.
 *
 *				V1.23 Nov.25.03
 *					1.MTErrorStr和MTRespStr兩個消息結構中增加一個sgipg_submit字段,用于返回其對應的SUBMIT消
 *					 息包,即這兩個消息是由哪個SUBMIT包返回的,原因是SubmitResp包中并未包含開發者可能用到的必要信
 *					 息(如手機號碼等,雖然這些信息在Report消息里面包含的比較全面)。
 *
 *				V1.21 Nov.08.03
 *					1.增加了函數CSgip::AddUserNumber(),可以方便地進行短消息群發.
 *					2.增加了函數CSgip::GetSubmitSeqId(),功能是獲得下一條submit消息的序列號.
 *					 在調用Submit()函數前調用可以提前獲得將要發送的submit消息的序列號,類推的話,
 *					 下一條submit消息的序列號將在上一條消息序列號的基礎上加3.這樣的話就可以提前給submit消息編號,
 *					 然后等待submit_resp消息的到來。
 *					3.CSgip::Submit()函數的原型由CSgip::Submit(sgipg_submit ss)變為
 *					 CSgip::Submit(sgipg_submit ss, unsigned int &nSeq),輸出參數nSeq的作用是返回submit消息的序列號.
 *
 *				V1.2  Sep.11.03
 *
 */

#ifndef _SMAL_SGIP_API_H
#define _SMAL_SGIP_API_H

#include <smal.h>
#include <common/threadpool.h>
#include <common/const.h>
#include <sgip/sgip_message.h>

#include <list>
using namespace std;

class CSgip;

///
/// SGIP JOB類
///
//##ModelId=46B5D42E028C
class CJobSgip : public IJobDesc {
public:
	//##ModelId=46B5D42E0297
	CJobSgip(SOCKET &hSocket, CSgip* sgip, unsigned remoteport);
	//##ModelId=46B5D42E02AA
	CJobSgip(sgipg_submit pss, CSgip* sgip, unsigned int nSeq, unsigned int nDateTime);
	//##ModelId=46B5D42E02B4
	~CJobSgip();

	//##ModelId=46B5D42E02BE
	void	RecvMOProc();
	//##ModelId=46B5D42E02C8
	void	SendMTProc();
	//##ModelId=46B5D42E02D2
	int		nType;

private:
	//##ModelId=46B5D42E02DD
	sgip_conn			sp_conn;
	//##ModelId=46B5D42E02E7
	CSgip*				m_sgip;
	//##ModelId=46B5D42E02F1
	sgipg_submit	ss;
	//##ModelId=46B5D42E02FB
	unsigned			m_nSeq;
	//##ModelId=46B5D42E0305
	unsigned			m_nDateTime;
};

///
///	SGIP WORK類
///
//##ModelId=46B5D42E0318
class CWorkerSgip : public IWorker {
	//##ModelId=46B5D42E0322
	virtual void ProcessJob( IJobDesc* pJobDesc );
};

///
///	 網關連接信息
///
//##ModelId=46B5D42E0336
class ConnInfo {
public:
	//##ModelId=46B5D42E0340
	ConnInfo() {
		socketHandle	= 0;
		port					= 0;
		memset(connectedTime, 0, MAX_PATH);
	}

	//##ModelId=46B5D42E0341
	ConnInfo(
		unsigned	_socketHandle, 
		unsigned	_port,
		const char * _connectedTime
		) 
	{
			socketHandle	= _socketHandle;
			port					= _port;
#if defined(_MSC_VER)  && _MSC_VER >= 1400
			strcpy_s(connectedTime, MAX_PATH, _connectedTime);
#else
			strcpy(connectedTime, _connectedTime);
#endif
			//strcpy(connectedTime, _connectedTime);
		}

	//##ModelId=46B5D42E034E
		unsigned	socketHandle;		///< 網關到SP的SOCKET句柄
	//##ModelId=46B5D42E0355
		unsigned	port;						///< 網關的遠程端口
	//##ModelId=46B5D42E035E
		char		connectedTime[MAX_PATH];	///< 網關到SP的連接連接時間
};

//##ModelId=46B5D42E0368
typedef std::list<ConnInfo>		cList;

///	SGIP網關實現類
//##ModelId=46B5D42F003F
class /*SGIP_API*/ CSgip{
	friend class CJobSgip;
public:
	/**@name Construction */
	//@{
	///
	///	構造函數,初始化WinSock,初始化變量值
	///
	//##ModelId=46B5D42F0049
	CSgip();

	///
	///	析構函數,釋放WinSock
	///
	//##ModelId=46B5D42F005D
	virtual ~CSgip();

  static CSgip* getInstance();
	
	//@}

	/**@name Main Functions */
	//@{
	/**
	* SGIPAPI啟動主函數
	* 在這個函數里面啟動本地監聽,連接網關,和啟動線城池。
	* 注意:
	* 1.在調用Start函數啟動后,如果想重新調用Start函數,
	* 必須首先調用Release函數釋放資源才能重新調用Start函數,否則會調用失敗。
	* 2.可以通過設定nLocalPort=-1,或nPeerPort=-1實現收發分離功能。
	* 
	* @param sLocalIP					SGIP本地監聽地址
	* @param nLocalPort				SGIP的本地監聽端口(注意:如果設為-1則不啟動本地監聽,即不接收網關的連接和消息,只啟用發送功能)
	* @param sPeerIP					聯通網關地址
	* @param nPeerPort				聯通網關端口(注意:如果設為-1,則不連接網關,即不執行發送功能,可以只接收MO消息)
	* @param sLoginName				登錄聯通網關的用戶名
	* @param sLoginPwd				登錄聯通網關的口令
	* @param nConnType				登錄網關的連接類型(按照協議規定,應該一直是1。<1:SP向SMG建立的連接,用于發送命令>)
	* @param sSrcNum					源節點編號(SP的編號規則:3AAAAQQQQQ AAAA表示四位長途區號,QQQQQ表示5位企業代碼。詳見協議3.3)
	* @param nConnCount				同網關建立的發送連接數
	* @param sPeerName				網關登錄SP的用戶名(如果用戶名或者口令為空的話,則不對網關連接進行用戶名口令鑒權)
	* @param sPeerPwd					網關登錄SP的口令
	* @param nMaxSmgConn			允許的網關到SP的最大連接數
	* @param nMinWorkThreadsCount	線程池的最小線程數(即初始線程數,建議為CPU個數*2 + 2)
	* @param nMaxWorkThreadsCount	線程池的最大線程數(建議為CPU個數*2 + 6,線程池會根據忙碌狀態在此范圍內自動調整)
	*
	* @return	0:成功; -1:失敗
	*/
	//##ModelId=46B5D42F0071
	int Start(
		const char			*sLocalIP, 
		int				nLocalPort,
		const char			*sPeerIP, 
		int				nPeerPort, 
		const char			*sLoginName, 
		const char			*sLoginPwd, 
		int				nConnType, 
		const char			*sSrcNum,
		int				nConnCount = 3, 
		const char			*sPeerName = NULL,
		const char			*sPeerPwd = NULL,
		unsigned	nMaxSmgConn = 16,
		unsigned	nMinWorkThreadsCount = 4,
		unsigned	nMaxWorkThreadsCount = 8
		);

	///
	/// 斷開連接,停止線程池,釋放資源
	///
	//##ModelId=46B5D42F0099
	void Release(
		BOOL forceRelease = FALSE		///< 如果Start沒有啟動成功,是否強制釋放
	);

	///
	/// 提交MT消息
	///	nDatetime(submit包的時間戳,序列號中的第二個字段),
	/// 與nSeq結合能夠做到唯一標識一條submit消息(即使系統重新啟動,nSeq重新歸零).
	///
	//##ModelId=46B5D42F00A3
	void Submit(
		sgipg_submit	ss,						///< Submit消息包
		unsigned			&nSeq,				///< 該消息包的序列號中的序列號
		unsigned			&nDateTime		///< 該消息包的序列號中的時間戳
	);

	/////
	/////	支持群發的設置目的號碼的函數.
	/////	sUserNumber可以是單個的手機號碼,或者以逗號,中劃線隔開的多個號碼.
	/////	可以是以下幾種類型之一,例如:"8613312345678",或"8613312345678,86133123456789",
	/////	或"8613312345670-8613312345679",或"8613312345670,8613312345675-8613312345689",或"8613012345678,8613012345679-8613012345688,8613312312312"。
	/////
	//int AddUserNumber(
	//	sgipg_submit* ss,					///< 要群發的消息包
	//	const char* sUserNumber		///< 要增加的群發手機號
	//);

	///
	/// 得到下一條要發submit消息的序列號
	///
	//##ModelId=46B5D42F00AF
	unsigned int GetSubmitSeqId();

	///
	///	得到當前網關到SP的連接信息
	///
	//##ModelId=46B5D42F00B0
	void GetSmgConnInfo(
		cList & _connList
	) {		
		_connList = connList; 
		return;		
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产免费一区二区三区四区| 亚洲成a人片在线观看中文| 久久成人精品无人区| 欧美伦理视频网站| 久久99国产精品尤物| 中文字幕乱码一区二区免费| 不卡视频一二三| 亚洲精选一二三| 99久久综合色| 丝袜美腿亚洲综合| 99热精品国产| 日韩专区欧美专区| 国产亚洲欧美中文| 欧美日韩视频一区二区| 香蕉成人啪国产精品视频综合网| 91精品国产一区二区三区蜜臀| 美女高潮久久久| 亚洲日本一区二区三区| 91麻豆精品国产无毒不卡在线观看 | 国产很黄免费观看久久| 国产精品久久久久久久第一福利| 欧美综合亚洲图片综合区| 国内精品久久久久影院薰衣草| 亚洲欧洲成人精品av97| 精品福利二区三区| 欧美精品一卡二卡| 久久爱另类一区二区小说| 亚洲色图视频网站| 国产精品美女久久福利网站 | 午夜不卡av在线| 中文字幕亚洲一区二区av在线| 欧美日韩高清影院| 91久久免费观看| 激情成人综合网| 日本不卡一二三| 奇米综合一区二区三区精品视频| 一区二区欧美视频| 久久综合狠狠综合久久激情| 91精品国产综合久久蜜臀 | 欧美伊人久久久久久久久影院| 国产精品综合一区二区| 国产乱码字幕精品高清av| 亚洲chinese男男1069| 亚洲高清一区二区三区| 三级久久三级久久久| 亚洲一区二区高清| 日本欧美在线观看| 精品一区二区在线视频| 福利视频网站一区二区三区| 成av人片一区二区| 成人美女在线视频| 91色视频在线| 欧美一激情一区二区三区| 久久精品视频免费观看| 亚洲人成在线播放网站岛国| 亚洲国产sm捆绑调教视频| 久久99国产精品麻豆| 91免费在线视频观看| 欧美日韩国产综合一区二区三区| 日韩欧美亚洲国产精品字幕久久久| 欧美午夜寂寞影院| 国产精品视频第一区| 麻豆精品新av中文字幕| 日韩av电影免费观看高清完整版 | 国产无遮挡一区二区三区毛片日本| 日韩一卡二卡三卡| 国产欧美日韩一区二区三区在线观看 | 亚洲女性喷水在线观看一区| 一区二区不卡在线播放| 免费三级欧美电影| 色综合久久综合网欧美综合网| 日韩一区二区三区三四区视频在线观看| 在线播放/欧美激情| 亚洲欧洲国产专区| 紧缚捆绑精品一区二区| 欧美视频中文字幕| 中文文精品字幕一区二区| 亚洲一区二区三区视频在线| 国产精品伦理在线| 日本网站在线观看一区二区三区| 不卡一区二区中文字幕| 国产午夜精品一区二区三区嫩草| 日本午夜精品视频在线观看| 一本色道久久加勒比精品| 亚洲男人的天堂在线观看| 成人av在线播放网址| 成人欧美一区二区三区在线播放| 99r国产精品| 日韩伦理电影网| 波多野结衣中文字幕一区| 精品国产乱码久久| av一区二区三区黑人| 一区二区三区免费网站| 欧美一级二级三级乱码| 国产乱码精品1区2区3区| 国产精品电影一区二区三区| 欧美性生活影院| 亚洲一区欧美一区| 在线成人av影院| 蜜臀久久99精品久久久久久9| 337p亚洲精品色噜噜| 久久99国产精品免费网站| 国产精品你懂的在线| 91亚洲午夜精品久久久久久| 天涯成人国产亚洲精品一区av| 欧美日韩国产高清一区| 成人激情免费电影网址| 午夜精品久久一牛影视| 国产日韩欧美不卡在线| 日本韩国精品一区二区在线观看| 一级日本不卡的影视| 欧美一区二区三区成人| 91福利视频在线| 国内精品国产成人国产三级粉色| 亚洲欧美日韩系列| 久久精品一区蜜桃臀影院| 色综合咪咪久久| 丁香天五香天堂综合| 日韩vs国产vs欧美| 婷婷中文字幕一区三区| 奇米亚洲午夜久久精品| 久久国产精品一区二区| 蜜桃av噜噜一区| 不卡免费追剧大全电视剧网站| 成人免费毛片a| 在线日韩av片| 91.成人天堂一区| 国产三级一区二区| 中文字幕欧美激情一区| 亚洲一级二级三级在线免费观看| 亚洲与欧洲av电影| 亚洲国产精品嫩草影院| 国产精品一区免费在线观看| 国产很黄免费观看久久| 在线免费视频一区二区| 91精品国产综合久久久久久久| 久久久精品免费网站| 亚洲一区二区在线视频| 日本不卡高清视频| 在线免费视频一区二区| 91精品蜜臀在线一区尤物| 中文字幕日韩av资源站| 亚洲成人动漫在线免费观看| 国产精品一区二区三区99| 91色综合久久久久婷婷| 欧美激情一二三区| 肉丝袜脚交视频一区二区| 91丝袜高跟美女视频| 日韩一区和二区| 日韩av中文字幕一区二区三区| 粉嫩一区二区三区在线看| 欧美一卡2卡3卡4卡| 午夜伊人狠狠久久| 欧洲亚洲国产日韩| 亚洲一区二区偷拍精品| 99精品热视频| 亚洲综合成人在线视频| 色呦呦国产精品| 亚洲乱码国产乱码精品精的特点| 成人av网址在线| 国产欧美日韩三区| 在线看国产一区| 日韩avvvv在线播放| 欧美精品一区二区不卡 | 天天综合色天天综合色h| 欧美性受xxxx| 久久91精品久久久久久秒播| 欧美日本高清视频在线观看| 亚洲高清不卡在线| 欧美一区二区三区喷汁尤物| 免费不卡在线视频| 亚洲欧美日韩精品久久久久| 国产高清无密码一区二区三区| 日本一区二区三区高清不卡| 色欧美88888久久久久久影院| 视频一区二区不卡| 久久久www免费人成精品| 日本福利一区二区| 免费人成在线不卡| 亚洲丝袜美腿综合| 精品少妇一区二区三区在线播放| 成人免费视频视频在线观看免费| 国产精品你懂的| 精品国内片67194| 97成人超碰视| 成人h精品动漫一区二区三区| 亚洲成av人片一区二区| 久久综合色播五月| 欧美成人综合网站| 色婷婷精品久久二区二区蜜臂av | 日韩精品一区二区三区四区视频| 粉嫩av亚洲一区二区图片| 极品尤物av久久免费看| 亚洲欧美国产三级| 一区二区三区在线观看网站| 2020国产精品| 欧美激情资源网| 精品国产乱子伦一区| 欧美一三区三区四区免费在线看| 在线亚洲一区二区|