180 lines
3.7 KiB
C++
180 lines
3.7 KiB
C++
//---------------------------------------------------------------------------
|
|
|
|
#ifndef HttpThreadH
|
|
#define HttpThreadH
|
|
//---------------------------------------------------------------------------
|
|
#define ERROR_OPEN_FILE 10
|
|
#define ERROR_MEMORY 11
|
|
#define ERROR_SIZE 12
|
|
#define ERROR_INTERNET_OPEN 13
|
|
#define ERROR_INTERNET_CONN 14
|
|
#define ERROR_INTERNET_REQ 15
|
|
#define ERROR_INTERNET_SEND 16
|
|
#define ERROR_INTERNET_TMOUT 17
|
|
#define ERROR_INTERNET_UNKNOWN 18
|
|
#define ERROR_INTERNET_FORMAT 19
|
|
#define ERROR_INTERNET_CANCEL 20
|
|
#define ERROR_VCODE_NORET 21
|
|
#define ERROR_VCODE_INVLEN 22
|
|
#define ERROR_VCODE_INVDATA 23
|
|
#define ERROR_VCODE_NOFUNC 24
|
|
#define ERROR_VCODE_RCGFAIL 25
|
|
|
|
//#define MAX_KEY_NUM 32
|
|
//#define MAX_STR_LEN 256
|
|
|
|
#define OP_VCODE 1
|
|
#define OP_USERREG 2
|
|
#define OP_USERLOG 3
|
|
#define OP_HKCCHK 4
|
|
#define OP_VCODEHDG 5
|
|
#define OP_GETUSER 6
|
|
#define OP_GETPROXY 7
|
|
#define OP_SETWHITE 8
|
|
#define OP_GETPROXYAPI 9
|
|
#define OP_GETWHITEAPI 10
|
|
|
|
|
|
typedef struct tBaseParam
|
|
{
|
|
int errCode;
|
|
HINTERNET hSession,
|
|
hRequest;
|
|
|
|
tBaseParam(){
|
|
memset( this, 0, sizeof(tBaseParam) );
|
|
};
|
|
} TBaseParam;
|
|
|
|
typedef struct tVeloParam : public TBaseParam
|
|
{
|
|
char api[32];
|
|
char addr[256];
|
|
int port;
|
|
DWORD flag;
|
|
|
|
HANDLE hSema;
|
|
HINTERNET hConnect;
|
|
|
|
tVeloParam(){
|
|
memset( this, 0, sizeof(tVeloParam) );
|
|
};
|
|
} TVeloParam;
|
|
|
|
typedef struct tHttpParam : public TBaseParam
|
|
{
|
|
char server[256];
|
|
char api[32];
|
|
int iMode;
|
|
|
|
HINTERNET hConnect;
|
|
|
|
DWORD sizeIn, sizeOut;
|
|
char *dataIn, *dataOut;
|
|
|
|
// bool bGetDT;
|
|
// DWORD dwDateTime;
|
|
|
|
tHttpParam(){
|
|
memset( this, 0, sizeof(tHttpParam) );
|
|
};
|
|
} THttpParam;
|
|
|
|
typedef struct tProbParam : public TBaseParam
|
|
{
|
|
char server[256];
|
|
|
|
HANDLE hSema;
|
|
|
|
tProbParam(){
|
|
memset( this, 0, sizeof(tProbParam) );
|
|
};
|
|
} TProbParam;
|
|
|
|
typedef struct tUrlParam : public TBaseParam
|
|
{
|
|
String url;
|
|
String header;
|
|
int sizeOut;
|
|
char* dataOut;
|
|
|
|
tUrlParam(){
|
|
memset( this, 0, sizeof(tUrlParam) );
|
|
};
|
|
} TUrlParam;
|
|
|
|
///////////////////////////////////////////////////////////////
|
|
class TBaseWebThread : public TThread
|
|
{
|
|
protected:
|
|
HWND m_hWnd;
|
|
HANDLE m_hSema;
|
|
|
|
virtual void __fastcall Execute()=0;
|
|
|
|
public:
|
|
__fastcall TBaseWebThread(HWND handle );
|
|
__fastcall ~TBaseWebThread();
|
|
|
|
void __fastcall Cancel();
|
|
};
|
|
|
|
class TAsynHttpThread : public TBaseWebThread //异步HTTP线程
|
|
{
|
|
private:
|
|
char m_dataIn[10240];
|
|
int m_sizeIn;
|
|
|
|
char m_server[256];
|
|
String m_api;
|
|
int m_iOp;
|
|
int m_iMode;
|
|
|
|
protected:
|
|
virtual void __fastcall Execute();
|
|
public:
|
|
__fastcall TAsynHttpThread(HWND handle, char* server, String api, char* dataIn, int sizeIn, int op=0, int mode=0 );
|
|
|
|
char m_dataOut[10240];
|
|
int m_sizeOut;
|
|
};
|
|
|
|
class TAsynUrlThread : public TBaseWebThread //异步URL访问线程
|
|
{
|
|
private:
|
|
String m_url;
|
|
String m_header;
|
|
int& m_szOut;
|
|
char* m_pzOut;
|
|
int m_iOp;
|
|
|
|
protected:
|
|
virtual void __fastcall Execute();
|
|
|
|
public:
|
|
__fastcall TAsynUrlThread(HWND handle, String url, char* pzOut, int& szOut, int op=0, String header="");
|
|
};
|
|
|
|
class TVeloThread : public TBaseWebThread //服务器选择线程
|
|
{
|
|
private:
|
|
int m_nWS;
|
|
char** m_websites;
|
|
int* m_ports;
|
|
int m_msWait;
|
|
char m_sApi[128];
|
|
|
|
protected:
|
|
virtual void __fastcall Execute();
|
|
public:
|
|
String m_sWebsite;
|
|
__fastcall TVeloThread(HWND handle, int nWS, char* websites[], int ports[]=NULL, char* api="", int msWait=10000 );
|
|
};
|
|
|
|
DWORD WINAPI ProbProc(LPVOID args); //服务器探测函数
|
|
DWORD WINAPI HttpProc(LPVOID args); //同步线程函数
|
|
DWORD WINAPI VeloProc(LPVOID args); //测速线程函数
|
|
DWORD WINAPI UrlProc(LPVOID args); //URL访问函数
|
|
bool IsPureUrl(String url); //url检查函数
|
|
#endif
|