?? cmppsocket_vc.h
字號:
/******************************************************************************
FileName : CcmppSocket.h
Description : 短消息發(fā)送程序
Version : 1.0
Date : 2003年4月6日
Author : 潘昱宇
Other : 只支持CMPP3.0
編譯開關(guān) 單字節(jié)對齊 ,連接Ws2_32.lib.
Email : rebbie@163.com
******************************************************************************/
#include "cmpp.h"
#include "sgip.h"
#include <windows.h>
#ifndef _CMPP_SOCKET_H_
#define _CMPP_SOCKET_H_
const int nCMPP_RCV_WINDOW_SIZE =2048 ; // 接收窗口大小
class CcmppSocket
{
public:
CcmppSocket ();
~CcmppSocket();
public:
int init( char *spid, char *passwd, char *ismg, unsigned short port = 7890);
int Submit( CMPP_SUBMIT &msg, DWORD dwMilliseconds = INFINITE);
private:
int _connect( char *ismg, unsigned short port);
int _login ( char *spid, char *passwd);
void _logout (); // 注銷
void _exit (); // 清除工作線程,退出接口
static DWORD WINAPI thread_send( LPVOID pdata);
static DWORD WINAPI thread_recv( LPVOID pdata);
static DWORD WINAPI thread_actv( LPVOID pdata);
private:
char* _timestamp( char *buf); // 生成10位的時間戳
__int64 _ntoh64 ( __int64 inval); // 將64位的整數(shù)轉(zhuǎn)成網(wǎng)絡(luò)字節(jié)順序
__int64 _hton64 ( __int64 inval); // 將64位的整數(shù)轉(zhuǎn)成主機字節(jié)順序
int _getseqid(); // 得到下一個數(shù)據(jù)包的流水號
int _send( char *buf, int len); // 同步發(fā)送數(shù)據(jù)
int _recv( char *buf, int len); // 同步接收數(shù)據(jù)
private:
SOCKET _soc; // 連接服務(wù)器的套接字
bool _binitialized; // 接口初始化標志
bool _bexitting; // 請求線程退出
char _spid[10]; // 6 位企業(yè)代碼
char _ismg[20]; // 短信網(wǎng)關(guān)IP地址
char _passwd[20]; // 企業(yè)登陸短信網(wǎng)關(guān)的口令
unsigned short _port; // 短信網(wǎng)關(guān)的端口,默認7890
int _seqid; // 流水號,需同步
HANDLE _hsend; // 發(fā)送線程
HANDLE _hrecv; // 接收線程
HANDLE _hactv; // 鏈路維持線程
HANDLE _hguard; // 守衛(wèi)線程,負責(zé)自動重連
HANDLE _hsema_wnd; // 計數(shù)數(shù)據(jù)窗口的空格
HANDLE _hevnt_data; // 計數(shù)新提交的數(shù)據(jù)報
HANDLE _hsema_rev; // 數(shù)據(jù)接收窗口空余大小
CRITICAL_SECTION _csec_wnd; // 同步數(shù)據(jù)窗口
CRITICAL_SECTION _csec_snd; // 同步發(fā)送數(shù)據(jù)
CRITICAL_SECTION _csec_recv; // 同步接收數(shù)據(jù)
CRITICAL_SECTION _csec_seq; // 同步流水號
CRITICAL_SECTION _csec_revwnd; // 同步數(shù)據(jù)接收窗口
CMPP_PACKAGE _window[nCMPP_WINDOW_SIZE]; // 數(shù)據(jù)窗口,需同步
// CMPP_FUNC_MAP _func_map[]; // 函數(shù)映射表
};
#endif
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -