Files
2026-06-12 23:18:12 +08:00

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