⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 proxyconnectsocket.h

📁 DarkATLSmtp(SMTP COM 组件原创代码),注册后可在Delphi中发邮件。
💻 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 + -