TSE源码分析-url.h

本文介绍了一个用于解析和处理URL的C++类CUrl。该类能够从原始URL中提取协议类型、主机名、端口号及路径等信息,并提供了通过主机名获取IP地址的功能。此外,还实现了一系列用于验证主机名、IP地址以及URL有效性的辅助函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//根据一个给定的URL,组成消息体,发送给该URL指向的服务器。

//为此,定义Url类
//url.h
#ifndef _URL_H_030728_
#define _URL_H_030728_

#include<string>

//定义URL和HOST长度

const unsigned int URL_LEN =256;
const unsigned int HOST_LEN = 256;

using namespace std;

//URL类型为HTTP、FTP、或无效
enum url_scheme {
 SCHEME_HTTP,
 SCHEME_FTP,
 SCHEME_INVALID
};

//定义HTTP和FTP的默认端口

const int DEFAULT_HTTP_PORT = 80;
const int DEFAULT_FTP_PORT  = 21;

class CUrl
{
public:
 stringm_sUrl;   //Original URL
 enum url_scheme m_eScheme; //URL scheme

 string m_sHost;  //Extracted hostname
 int m_nPort;  //Port number
 string m_sPath;  // 请求 

public:
 CUrl();
 ~CUrl();

 //bool ParseUrl(string strUrl);

 //解析URL的scheme, host, port and request

 // break  an URL into scheme,host, port and request.
 // result as member variants
 bool ParseUrlEx(string strUrl);

//解析URL的scheme, host, port and request

 // break an URL into scheme, host, port andrequest.
 // result url as argvs

//解析URL的scheme, host, port and request
 void ParseUrlEx(const char *url, char *protocol,int lprotocol,
   char *host,int lhost,
   char*request, int lrequest, int *port);

 // get the ip address by hostname通过主机名得到IP
 char *GetIpByHost(const char *host);

//基本判断函数

 bool IsValidHost(const char *ip);
 bool IsForeignHost(string host);
 bool IsImageUrl(string url);
 bool IsValidIp(const char *ip);
 bool IsVisitedUrl(const char *url);
 bool IsUnReachedUrl(const char *url);
 bool IsValidHostChar(char ch);

private:
 void ParseScheme (const char *url);

};

extern pthread_mutex_t mutexMemory;

#endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值