📄 proxyconnectsocket.h
字号:
// ProxyConnectSocket.h: interface for the CProxyConnectSocket class.
// Author: 高越
// Date: 2001-11-13
//作者:高越 邮箱:darkprince@v.cn
//QQ:1738387 (本人只接受技术探讨以及软件项目合作事宜,其他误扰)
// Purpose: Make a CProxyConnectSocket Class That Support Connect To Far Host Server.
// The Class Support Connect Proxy Server By (Socks4 Socks4a Socks5 HttpGet
// HttpConnect FtpProxy..)Just so.Kernel of Communication Use Asynchronous
// Event Model By WinSock2 API.
// MailTo: DarkPrince@263.net
// Notes: More Information Please Reference That Document of "Readme.Txt".
// About Protocols: RFC2616 RFC2617 For HTTP1.1
// RFC1928 RFC1929 For Socks Proxy
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_PROXYCONNECTSOCKET_H__B2C6C048_9450_4EE8_A20A_6AEC3F121776__INCLUDED_)
#define AFX_PROXYCONNECTSOCKET_H__B2C6C048_9450_4EE8_A20A_6AEC3F121776__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "DPSocketModel.h" //Self Socket API Function Surpport
// PROXY's Type
typedef enum _enumPROXYTYPE
{
PROXYTYPE_NONE,//No Proxy Surpport
PROXYTYPE_HTTPGET,//HttpGet Proxy
//PROXYTYPE_HTTPCONNECT,//HttpConnect Proxy
PROXYTYPE_SOCKS4,//Proxy By Socks4
PROXYTYPE_SOCKS4A,//Proxy By Socks4a Surpport
PROXYTYPE_SOCKS5,//Proxy By Socks5
PROXYTYPE_FTPSITE,//Proxy By FtpSite
PROXYTYPE_FTPOPEN,//Proxy By FtpOpen
PROXYTYPE_FTPTRANSPARENT, //Transparent
PROXYTYPE_FTPUSERAFTERLOGON, //USER after logon
PROXYTYPE_FTPUSERNOLOGON, //USER with no logon
PROXYTYPE_FTPUSERFIREID, //USER fireID@remotehost
PROXYTYPE_FTPUSERREMOTEID, //USER remoteID@remotehost fireID
PROXYTYPE_FTPUSERREMOTEIDFIREID// USER remoteID@fireID@remotehost
}ENUM_PROXYTYPE;
typedef struct _tagCONNECTINFO
{
CString strServerIp;//Far Server Addr(Host Name OR Host IP)
USHORT nServerPort;//Far Server Port
DWORD dwTimeOut;//TimeOut Of Connect Server
CString strProxyIp;//Proxy Addr(Proxy Host Name OR Host IP)
USHORT nProxyPort;//Proxy Port
ENUM_PROXYTYPE nProxyType;//Proxy Type
BOOL bNeedAuth;//Is It Need Validate That Connect To Proxy? That For Socks5.
CString strUserName;//UserName For Connect Proxy
CString strPassWord;//PassWord For Connect Proxy
}TAG_CONNECTINFO,*LPTAG_CONNECTINFO;
typedef struct _tagPROXYINFO
{
CString strProxyAddr;//代理地址
USHORT nProxyPort;//端口
ENUM_PROXYTYPE nProxyType;//类型
BOOL bNeedAuth;//是否需要验证
CString strUserName;//用户名称
CString strPassWord;//密码
CString strRemark;//备注
BOOL bDefHttpProxy;//默认的HTTP PROXY
BOOL bDefFtpProxy;//默认的FTP PROXY
}TAG_PROXYINFO,*LPTAG_PROXYINFO;
#define READ_BUFFER_SIZE (10*1024)// Buffer Of Connect Proxy That is 10K
#include "SocksPacket.h" //Self Socks API Surpport
class CProxyConnectSocket : public CDPSocketModel
{
public:
CProxyConnectSocket();
virtual ~CProxyConnectSocket();
//Create A Socket For Send Message Or Recv That.Also That Include
//Connect To Proxy.Notes It's Return A Socket Num If That is Successful.
SOCKET CreateConnectSocket(LPTAG_CONNECTINFO pConnectInfo,DWORD& dwErrorCode);
private:
BOOL DoConnectByNone(LPTAG_CONNECTINFO pConnectInfo,
SOCKET hConnect,DWORD& dwErrorCode);
BOOL DoConnectByHttpGet(LPTAG_CONNECTINFO pConnectInfo,
SOCKET hConnect,DWORD& dwErrorCode);
BOOL DoConnectByHttpConnect(LPTAG_CONNECTINFO pConnectInfo,
SOCKET hConnect,DWORD& dwErrorCode);
BOOL DoConnectBySocks4(LPTAG_CONNECTINFO pConnectInfo,
SOCKET hConnect,DWORD& dwErrorCode);
BOOL DoConnectBySocks4a(LPTAG_CONNECTINFO pConnectInfo,
SOCKET hConnect,DWORD& dwErrorCode);
BOOL DoConnectBySocks5(LPTAG_CONNECTINFO pConnectInfo,
SOCKET hConnect,DWORD& dwErrorCode);
BOOL DoConnectByFtp(LPTAG_CONNECTINFO pConnectInfo,
SOCKET hConnect,DWORD& dwErrorCode);
private:
DECLARE_SOP_FUNCTION; //Declare All Socks Function Those Belong to The Class
private:
LPTAG_BSD m_pBSD;// Buffer That Connect To Proxy Need It.
};
#endif // !defined(AFX_PROXYCONNECTSOCKET_H__B2C6C048_9450_4EE8_A20A_6AEC3F121776__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -