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

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

?? sgip.h

?? 1) 系統(tǒng)采用面向對象的方法
?? H
?? 第 1 頁 / 共 2 頁
字號:
		sgipg_connect			pk_login;			//登錄包	
		sgipg_resp				pk_resp;			//應答消息包

		sgipg_submit			pk_submit;			//Submit消息包
		
		sgipg_deliver			pk_deliver;			//Deliver消息包
		
		sgipg_report			pk_report;			//Report消息包
	}pk_data;
};
typedef struct sgipg_packet SGIPG_PACKET;

struct sgip_conn {
	SOCKET			hSocket;
	unsigned int	nSrcNum;				//源節(jié)點編號
	bool			fBinded;
	bool			fBusy;
	int				nCount;

	sgip_conn() {
		fBinded = false;
		hSocket = NULL;
		fBusy = false;
		nCount = 0;
	}
};
typedef struct sgip_conn	SGIP_CONN;

//
//	消息包長度定義
//
#define	SGIP_HEADLEN		sizeof(sgipg_head)		//消息頭的長度
#define	SGIP_LOGINLEN		sizeof(sgipg_connect)	//登錄消息包體的長度
#define	SGIP_RESPLEN		sizeof(sgipg_resp)		//應答包體的長度
#define	SGIP_SUBMITLEN		sizeof(sgipg_submit)	//MT消息體的長度
#define	SGIP_DELIVERLEN		sizeof(sgipg_deliver)	//MO消息體的長度
#define	SGIP_REPORTLEN		sizeof(sgipg_report)	//Report消息體的長度
//
/////////////////////////////////////////////////////////////////////////////////////////

//
//用于返回包
//
/////////////////////////////////////////////////////////////////////////////////////////
//Deliver包結構
typedef struct deliverstr
{
	unsigned int	nSrcNum;
    unsigned int	nDateTime;
    unsigned int	nSeq;

	char 			sUserNumber[22];
	char			sSPNumber[22];
	unsigned char	tp_pid;
	unsigned char	tp_udhi;
	unsigned char	cMsgCoding;
	unsigned int	nMsgLen;
	unsigned char	sMsgContent[160];
	char			sLinkId[9];
}DeliverStr;

//Report包結構
typedef struct reportstr
{
	unsigned int	nSrcNum;
    unsigned int	nDateTime;
    unsigned int	nSeq;

	char			sUserNumber[22];
	unsigned char   cState;
	unsigned char   cErrcode;

	unsigned int	nSubmitSeq;
	unsigned int	nSubmitDateTime;
}ReportStr;

//MT Response結構
typedef struct mtrespstr
{
	unsigned int	nID;
	unsigned int	nSrcNum;
    unsigned int	nDateTime;
    unsigned int	nSeq;
	unsigned char	cResult;

	sgipg_submit	ss;
}MTRespStr;

//Submit錯誤結構,當Submit發(fā)送不成功時,返回該結構
typedef struct mterrorstr
{
	unsigned int	nID;
	unsigned int	nSrcNum;
    unsigned int	nDateTime;
    unsigned int	nSeq;
	//1:因為連接不上SMG網關系統(tǒng) 2:登錄網關失敗 3:包發(fā)送失敗且超過重發(fā)次數 4.超時無應答 5.消息長度為零 6.沒有可用的連接
	int				nErrorType;    

	sgipg_submit	ss;
}MTErrorStr;

//
//注:函數返回值零表示成功,其他表示失敗
//
/////////////////////////////////////////////////////////////////////////////////////////
//Winsock封裝
//
int	sgip_create_tcp_socket(SOCKET &hSocket);
int	sgip_socket_close(SOCKET& hSocket);
int	sgip_socket_bind(SOCKET hSocket, int nPort);
int	sgip_socket_accept(SOCKET hServer, SOCKET &hClient);

int	sgip_socket_connect(SOCKET hSocket, const char *sServAddr, int	nPort);
int	sgip_socket_select_send(SOCKET hSocket, const char *sBuffer, int nSize, int nTimeOut);
int	sgip_socket_select_recv(SOCKET hSocket, char *sBuffer, int nSize, int nTimeOut);
int	sgip_socket_send(SOCKET hSocket, const char *sBuffer, int nSize);
int	sgip_socket_recv(SOCKET hSocket, char *sBuffer, int nSize);
//
/////////////////////////////////////////////////////////////////////////////////////////


/////////////////////////////////////////////////////////////////////////////////////////
//協(xié)議實現
int	sgip_connect_to_ismg(const char *sSrvAddr, int nPort, sgip_conn *conn);

int	sgip_disconnect_from_ismg(sgip_conn *conn);

int	sgip_login(sgip_conn* conn, sgipg_connect *sc, const char* sSrcNum, unsigned int nSeq);

int	sgip_login_value_set(sgipg_connect *sc, int nLoginType, const char *sLoginName, const char *sLoginPwd);

int	sgip_logout(sgip_conn* conn, unsigned int nSeq);

int sgip_submit(sgip_conn* conn, sgipg_submit* ss, unsigned int nSeq, unsigned int nDateTime);

int	sgip_recv(sgip_conn* conn,  sgipg_packet* sp, unsigned int nTimeOut);

int	sgip_auto_resp(sgip_conn* conn, sgipg_head* sh, unsigned int nResult = 0);

int	sgip_deliver(sgip_conn* conn, sgipg_deliver* sd);

int	sgip_submit_sm_init(sgipg_submit* cs);
int	sgip_submit_sm_set_spnumber(sgipg_submit* cs, const char* sSpNumber, unsigned int nSize);
int	sgip_submit_sm_set_chargenumber(sgipg_submit* cs, const char* sChargeNumber, unsigned int nSize);
int	sgip_submit_sm_set_usercount(sgipg_submit* cs, unsigned char cUserCount);
int	sgip_submit_sm_set_usernumber(sgipg_submit* cs, const char *sUserNumber, unsigned int nSize);
int	sgip_submit_sm_add_usernumber(sgipg_submit* cs, const char *sUserNumber);

int	sgip_submit_sm_set_corpid(sgipg_submit* cs, const char* sCorpId, unsigned int nSize);
int	sgip_submit_sm_set_servicetype(sgipg_submit* cs, const char* sServiceType, unsigned int nSize);
int	sgip_submit_sm_set_feetype(sgipg_submit* cs, unsigned char cFeeType);
int	sgip_submit_sm_set_feevalue(sgipg_submit* cs, const char* sFeeValue, unsigned int nSize);
int	sgip_submit_sm_set_givenvalue(sgipg_submit* cs, const char* sGivenValue, unsigned int nSize);
int	sgip_submit_sm_set_agentflag(sgipg_submit* cs, unsigned char cAgentFlag);
int	sgip_submit_sm_set_morelatetomtflag(sgipg_submit* cs, unsigned char cMorelatetoMTFlag);
int	sgip_submit_sm_set_priority(sgipg_submit* cs, unsigned char cPriority);
int	sgip_submit_sm_set_expiretime(sgipg_submit* cs, unsigned int nValidMinutes);
int	sgip_submit_sm_set_schuduletime(sgipg_submit* cs, const char* sSchuduleTime);
int	sgip_submit_sm_set_reportflag(sgipg_submit* cs, unsigned char cReportFlag);
int	sgip_submit_sm_set_protoid(sgipg_submit* cs, unsigned char cTpPid, unsigned char cTpUdhi);
int	sgip_submit_sm_set_messagecoding(sgipg_submit* cs, unsigned char cMsgCoding);
int	sgip_submit_sm_set_messagetype(sgipg_submit* cs, unsigned char cMsgType);
int	sgip_submit_sm_set_messagecontent(sgipg_submit* cs, void *sMsgContent, unsigned int nSize);

int	sgip_get_datetime();

class CJobSgip:public IJobDesc {
public:
	CJobSgip(SOCKET &hSocket, CSgip* sgip);
	CJobSgip(sgipg_submit pss, CSgip* sgip, unsigned int nSeq, unsigned int nDateTime);
	~CJobSgip();

	void	RecvMOProc();
	void	SendMTProc();
	int		nType;	//1:send mt 0:get mo
private:
	sgip_conn		sp_conn;
	CSgip*			m_sgip;
	sgipg_submit	ss;
	unsigned int	m_nSeq;
	unsigned int	m_nDateTime;
};

class CWorkerSgip:public IWorker {
	virtual void ProcessJob( IJobDesc* pJobDesc );
};


class SGIP_API CSgip{
	friend class CJobSgip;
public:
	CSgip();

	~CSgip();

	 int Start(char* sLocalIP, int nLocalPort, char* sPeerIP, int nPeerPort, \
		char* sLoginName, char* sLoginPwd, char* sSrcNum,  \
		void (*m_PDeliver)(DeliverStr  deliver), void (*m_PReport)(ReportStr report), \
		void (*m_PResponse)(MTRespStr  response), void (*m_PMTError)(MTErrorStr mterror), \
		int nConnCount = 3, bool fOuptutDebugInfo = false);

	void Release();
	
	// V1.25版本的Submit函數增加了輸出參數nDatetime(submit包的時間戳,序列號中的第二個字段),
	// 與nSeq結合能夠做到唯一標識一條submit消息(即使系統(tǒng)重新啟動,nSeq重新歸零).
	void Submit(sgipg_submit ss, unsigned int &nSeq, unsigned int &nDateTime/*, unsigned int &nMsgCount*/);
	
	void Dump(sgipg_packet* sp);

	const char* GetErrMsg(int nError);
	
//	函數名稱:	AddUserNumber
//	函數功能:	支持群發(fā)的設置目的號碼的函數.
//	輸入參數:	
//	輸出參數:
//	返回值:	
//	描述:
//				sUserNumber可以是單個的手機號碼,或者以逗號,中劃線隔開的多個號碼.
//				可以是以下幾種類型之一,例如:"8613312345678",或"8613312345678,86133123456789",
//				或"8613312345670-8613312345679",或"8613312345670,8613312345675-8613312345689",或"8613012345678,8613012345679-8613012345688,8613312312312"。
//				
//	版本:		V1.0
	int AddUserNumber(sgipg_submit* ss, const char* sUserNumber);

//得到下一條要發(fā)submit消息的序列號
	unsigned int GetSubmitSeqId();
	
	int SubmitFunc(sgipg_submit ss, unsigned int nSeq, unsigned int nDateTime);
private:
	bool LocalListen();

	bool IsValidIPAddr(LPCTSTR sIPAddr);

	bool CreateLogFile();

	bool TestPeerLogin();

	sgip_conn* GetSubmitConn(int &nConnIndex);

	void ChangeStatus(int nConnIndex, bool fBusy);

	int	 LoginSmg(sgip_conn *pConn);

	void LogoutSmg(sgip_conn *pConn);

	bool CreateConn();

	bool ReleaseConn();

private:
	void Trace(LPCTSTR sEvent, ...);

	static DWORD WINAPI SgipServFunc(LPVOID pParam);
	
	virtual DWORD SgipServProc();

	void (*m_PDeliver)(DeliverStr  deliver);
	
	void (*m_PReport)(ReportStr report);
	
	void (*m_PResponse)(MTRespStr  response);
	
	void (*m_PMTError)(MTErrorStr mterror);

private:
	CString		m_sPeerAddr;		//網關IP
	int			m_nPeerPort;		//網關端口
	CString		m_sUserName;		//登錄用戶名
	CString		m_sPwd;				//登錄口令
	int			m_nConnType;		//連接類型
	CString		m_sSrcNum;			//原節(jié)點號碼
	
	CString		m_sLocalIPAddr;		//本機地址
	int			m_nLocalPort;		//本地監(jiān)聽端口
	CString		m_sLogPath;			//日志文件路徑

	BOOL		m_fStop;			//系統(tǒng)停止標志
	BOOL		m_fLogEvent;		//是否記錄系統(tǒng)日志
	BOOL		m_fStarted;			//是否已經啟動
	SOCKET		serverSocket;		//本地監(jiān)聽套接字

	CThreadPool	pool;				//線程池

	CWorkerSgip	m_worker;
	CJobSgip	*m_pJob;
	HANDLE		m_hThread;			//本地監(jiān)聽線程的句柄

	unsigned int m_nCounter;		//消息的數量

	sgip_conn	SubmitConn[MAX_PATH];
	int			m_nSubmitConn;
	CCriticalSection m_arrayCs;
	int			m_nConnIndex;
};

#endif // !defined(AFX_SGIP_H__3164D539_D12F_4413_B519_24C91E94101E__INCLUDED_)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
制服丝袜国产精品| 99久久国产综合精品麻豆| 亚洲精品国产精华液| 最新成人av在线| 亚洲美女视频在线观看| 中文字幕亚洲成人| 国产精品久久777777| 亚洲精品老司机| 亚洲精品欧美专区| 亚洲123区在线观看| 日产精品久久久久久久性色| 久久国产精品99久久人人澡| 久久激情五月激情| 国产91综合一区在线观看| 不卡av免费在线观看| 一本一道久久a久久精品综合蜜臀| 99久久国产综合精品麻豆| 日本高清免费不卡视频| 欧美视频在线观看一区二区| 91.xcao| 亚洲精品一区二区三区四区高清 | 亚洲精品高清在线| 亚洲一区免费观看| 美女被吸乳得到大胸91| 国产91富婆露脸刺激对白| 91色.com| 日韩午夜激情av| 成人欧美一区二区三区黑人麻豆| 一区二区欧美在线观看| 久久爱www久久做| 一本到不卡免费一区二区| 欧美精选一区二区| 中文字幕av一区 二区| 亚洲精品一二三区| 美女国产一区二区| 99视频在线精品| 欧美精品一区二区在线观看| 亚洲欧美另类综合偷拍| 九九九久久久精品| 欧美综合久久久| 国产亚洲综合性久久久影院| 午夜久久久影院| 成人av资源站| 久久综合成人精品亚洲另类欧美 | 欧美精品久久一区二区三区| 精品国产乱码久久久久久老虎| 亚洲精选视频在线| 精品一区二区三区av| 欧美日韩色一区| 最新国产の精品合集bt伙计| 国产综合色产在线精品| 欧美日韩高清在线| 亚洲欧洲无码一区二区三区| 久久99最新地址| 欧美一级欧美三级在线观看| 亚洲日本va午夜在线影院| 国产一区二区在线观看免费| 欧美日韩免费观看一区二区三区 | 91亚洲国产成人精品一区二三| 日韩欧美国产综合在线一区二区三区 | 一区二区三区精品视频| 成人性生交大合| 久久伊99综合婷婷久久伊| 日韩国产在线观看一区| 欧美日韩午夜影院| 亚洲一区二区在线观看视频| 99精品久久只有精品| 中文字幕国产一区| 国产高清不卡二三区| 久久久久久久综合| 精品无码三级在线观看视频| 欧美精选午夜久久久乱码6080| 亚洲日穴在线视频| 99国产精品久久久久久久久久| 中文字幕成人av| 波多野结衣在线aⅴ中文字幕不卡| 久久精品亚洲精品国产欧美kt∨| 国产精品一区二区91| 国产色产综合色产在线视频| 国产91清纯白嫩初高中在线观看| 中文字幕精品一区| 91丨porny丨国产| 亚洲综合在线观看视频| 在线影院国内精品| 亚洲gay无套男同| 欧美一区二区三区色| 极品销魂美女一区二区三区| 久久综合中文字幕| 国产成人av自拍| 亚洲精品欧美二区三区中文字幕| 欧美日韩一级二级三级| 老司机精品视频一区二区三区| 久久亚洲二区三区| 99久久精品国产导航| 亚洲综合图片区| 日韩三级在线观看| 成人黄页在线观看| 亚洲影视资源网| xf在线a精品一区二区视频网站| 成人黄色a**站在线观看| 一区二区三区中文字幕精品精品| 欧美老女人在线| 国产精品正在播放| 怡红院av一区二区三区| 日韩一区二区三区免费看 | 中文字幕va一区二区三区| 一本大道av伊人久久综合| 日本v片在线高清不卡在线观看| 久久精品男人天堂av| 欧美专区在线观看一区| 激情伊人五月天久久综合| 亚洲女厕所小便bbb| 欧美一区二区精美| 91一区二区在线观看| 美女视频黄 久久| 亚洲欧美区自拍先锋| 26uuu亚洲婷婷狠狠天堂| 91麻豆免费在线观看| 欧美aaaaaa午夜精品| 一区在线观看视频| 久久亚区不卡日本| 欧美日韩欧美一区二区| voyeur盗摄精品| 国内不卡的二区三区中文字幕| 亚洲一区日韩精品中文字幕| 欧美精彩视频一区二区三区| 欧美一级欧美一级在线播放| 色综合中文字幕国产 | 精品国产精品一区二区夜夜嗨| 色先锋久久av资源部| 国产尤物一区二区在线| 亚洲午夜激情av| **网站欧美大片在线观看| 久久午夜电影网| 日韩欧美一区在线观看| 欧美日韩一区高清| 色成人在线视频| 99热这里都是精品| 成人手机电影网| 国产91清纯白嫩初高中在线观看| 精品一区二区在线视频| 日本亚洲天堂网| 日韩成人午夜精品| 一区二区日韩av| 亚洲一区二区3| 亚洲一区二区三区四区的| 一区二区三区日韩精品| 亚洲欧洲精品天堂一级| 中文子幕无线码一区tr| 久久久久久夜精品精品免费| 337p日本欧洲亚洲大胆色噜噜| 精品国产三级电影在线观看| 91精品国产综合久久久久久| 欧美日高清视频| 91精品国产全国免费观看| 91精品国产综合久久精品性色| 欧美人狂配大交3d怪物一区| 欧美精品一二三四| 日韩亚洲欧美中文三级| xnxx国产精品| 国产精品丝袜久久久久久app| 国产女人水真多18毛片18精品视频| 国产免费久久精品| 国产精品剧情在线亚洲| 一区二区三区四区亚洲| 亚洲图片有声小说| 九九九久久久精品| 成人免费视频一区| 在线一区二区三区四区五区 | 在线不卡a资源高清| 欧美日韩国产小视频| 欧美肥大bbwbbw高潮| 欧美videossexotv100| 国产网红主播福利一区二区| 亚洲人成小说网站色在线 | 中文字幕中文字幕在线一区| 综合久久久久综合| 亚洲电影你懂得| 精品一区二区久久| 91论坛在线播放| 欧美一区二区三区免费在线看| 久久久久久免费毛片精品| 亚洲精品视频在线| 蜜桃一区二区三区在线| 波多野结衣视频一区| 91精品国产一区二区三区蜜臀 | 欧美日韩一区二区三区四区| 欧美va在线播放| 亚洲激情在线激情| 国产主播一区二区| 欧美日韩三级一区| 国产日产精品1区| 亚洲成人精品在线观看| 国产成人aaaa| 欧美人妖巨大在线| 亚洲欧美偷拍另类a∨色屁股| 麻豆91精品视频| 欧美三级乱人伦电影| 国产精品网站导航| 久久99精品国产麻豆婷婷洗澡|