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

📄 upnp.h

📁 一个udp穿透nat的源代码
💻 H
字号:
#ifndef MYUPNP_H_
#include "bt.h"
typedef bool (*PUPNPCALLBACK)(void* lp);
const int UPNPREPEAT = 5;
const int UPNPDELAY = 6;
class QMyUPNP
{
public:
	QMyUPNP();
    QMyUPNP(const QString& device);
	~QMyUPNP();
	void		Clear();
	bool		Comfirmed()const{return (Valid()&&!m_controlurl.IsEmpty());}
	bool		Search(const QString& name, const char* type="service", int repeat=UPNPREPEAT, int delay=UPNPDELAY, int version=1, PUPNPCALLBACK lpCall=NULL);
	bool		GetDescription(int delay=UPNPDELAY);
	QString		GetProperty(const QString& name, const QString& rsp, int delay=UPNPDELAY);
	bool		InvokeCommand(const QString& name, QStringList& args,int delay=UPNPDELAY);
	bool		SetDescriptionUrl(const QString& name, const QString& descri);
	void		SetDeviceName(const QString& p){m_devicename = p;}
	QString		GetDeviceName()const{return m_devicename;}
	QString		GetDescriptionUrl()const{return m_description;}
	QString		GetControlUrl()const{return m_controlurl;}
	QString		GetBaseUrl()const{return m_baseurl;}
	QString		GetDescriptionName()const{return m_name;}
	QString		GetFriendlyName()const{return m_friendlyname;}
	QString		GetModelName()const{return m_modelname;}
	QMyUPNP&	operator=(const QMyUPNP& up);
protected:
	bool		Valid()const{return (!m_name.IsEmpty()&&!m_description.IsEmpty());}
	void		InternalClear();
	bool		InternalSearch(const QString& name, const char* type, int repeat, int delay, int version, ulong ip, PUPNPCALLBACK lpCall);
	bool		InternalSearch2(const QString& name, const char* type, int repeat, int delay, int version, ulong ip, PUPNPCALLBACK lpCall);
	QString		m_devicename;
	QString		m_name;
	QString		m_description;
	QString		m_baseurl;
	QString		m_controlurl;
	QString		m_friendlyname;
	QString		m_modelname;
	int			m_version;
};
inline QMyUPNP& QMyUPNP::operator=(const QMyUPNP& upnp)
{
	if(this==&upnp)return *this;
	m_devicename = upnp.m_devicename;
	m_name = upnp.m_name;
	m_description = upnp.m_description;
	m_baseurl = upnp.m_baseurl;
	m_controlurl = upnp.m_controlurl;
	m_friendlyname = upnp.m_friendlyname;
	m_modelname = upnp.m_modelname;
	m_version = upnp.m_version;
	return *this;
}
#define UPNPPORTMAP0   "WANIPConnection"
#define UPNPPORTMAP1   "WANPPPConnection"
#define UPNPGETEXTERNALIP "GetExternalIPAddress","NewExternalIPAddress"
#define UPNPADDPORTMAP "AddPortMapping"
#define UPNPDELPORTMAP "DeletePortMapping"
void GetAddPortmapArgs(QStringList& args, int eport, int iport, const char* iclient,
					   const char* descri, bool enabled = true, int dur = 0,
					   const char* type = "TCP", const char* remote = NULL);
void GetDeletePortmapArgs(QStringList& args, int eport, const char* type = "TCP", const char* remote=NULL);
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -