【C++】获取URL中主机域名
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <windows.h>
#include <string>
typedef enum
{
TYPE_NULL, //XParseURL分析出错,或者地址错误
TYPE_FTP,
TYPE_HTTP,
TYPE_HTTPS,
}URLTYPE;
URLTYPE XParseURL(LPCTSTR lpURL)
{
int nPort = 0;
TCHAR lpszHost[1024] = L"0";
TCHAR lpszObject[1024] = L"0";
URLTYPE urltype;
int nSize = 0;
int i;
TCHAR lpszURL[1024];
LPCTSTR lpHttp = _T("http://");
LPCTSTR lpHttps = _T("https://");
LPCTSTR lpftp = _T("ftp://");
lstrcpy(lpszURL, lpURL);
for (i = 0; i < wcslen(lpszURL); i++)
{
if (_T('\\') == lpszURL[i]) lpszURL[i] = _T('/');
}
//判断协议
if (CSTR_EQUAL == CompareString(LOCALE_USER_DEFAULT, NORM_IGNORECASE, lpHttp, lstrlen(lpHttp), lpURL, lstrlen(lpHttp)))
{
nSize = lstrlen(lpHttp);
urltype = TYPE_HTTP;
}
else if (CSTR_EQUAL == CompareString(LOCALE_USER_DEFAULT, NORM_IGNORECASE, lpHttps, lstrlen(lpHttps), lpURL, lstrlen(lpHttps)))
{
nSize = lstrlen(lpHttps);
urltype = TYPE_HTTPS;
}
else if (CSTR_EQUAL == CompareString(LOCALE_USER_DEFAULT, NORM_IGNORECASE, lpftp, lstrlen(lpftp), lpURL, lstrlen(lpftp)))
{
nSize = lstrlen(lpftp);
urltype = TYPE_FTP;
}
else
{
urltype = TYPE_NULL;
return urltype;
}
//找页面
for (i = nSize; i < lstrlen(lpszURL); i++)
{
if (_T('/') == lpszURL[i])
{
//这里有点小问题
//if (!lpszObject)
//{
lstrcpy((LPWSTR)lpszObject, &lpszURL[i + 1]);
//};
lpszURL[i] = 0;
break;
}
}
//找端口
for (i = nSize; i < lstrlen(lpszURL); i++)
{
if (_T(':') == lpszURL[i])
{
if (!nPort)
{
nPort = _ttoi(&lpszURL[i + 1]);
};
lpszURL[i] = 0;
break;
}
}
if (lpszHost)
{
lstrcpy(lpszHost, &lpszURL[nSize]);
}
printf("主机:%ls ,端口:%d ,页面:%ls \n", lpszHost, nPort, lpszObject);
return urltype;
}
int main()
{
int i = XParseURL(L"https://www.baidu.com:3389/test/admin.html");
printf("协议 ");
//协议判断
switch (i)
{
case 0: printf("NULL \n"); break;
case 1: printf("ftp \n"); break;
case 2: printf("http \n"); break;
case 3: printf("https\n"); break;
default:
break;
}
return 0;
}

参考
[技术专题] [原创]获取URL中主机域名的小技巧!
http://bbs.pediy.com/thread-179681.htm
【C++】获取URL中主机域名的更多相关文章
- Java获取URL中的顶级域名domain的工具类
方式一: import java.net.MalformedURLException; import java.net.URL; import java.util.Arrays; import jav ...
- js获取URL中的参数
js获取URL中的一些参数的意思 location对象 含有当前URL的信息. 属性 href 整个URL字符串. protocol 含有URL第一部分的字符串,如http: host 包含有URL中 ...
- 获取url中的参数\+发送ajax请求根路径|+获取复选框的值
//获取url中的参数function getUrlParam(name) { var reg = new RegExp("(^|&)" + name + "=( ...
- 关于获取URL中传值的解决方法
在我们页面的URL中包含着很多信息,包括域名,协议等等这里就不一一介绍了),对于我们开发者而言,使用比较多的就是页面之间的传值.为什么要页面传值呢?很简单,当你在浏览一个商品页面的时候你要看到一个商品 ...
- 使用JavaScript获取url中的参数值
今天需要用到从url中获取参数,在网上找了几个JavaScript方法,mark下来. 一些可以使用的去获取url中指定的部分:如http://www.mystuff.com.cn/aboutus ...
- JS获取url中query_str JavaScript RegExp 正则表达式基础详谈
面我们举例一个URL,然后获得它的各个组成部分:http://i.cnblogs.com/EditPosts.aspx?opt=1 1.window.location.href(设置或获取整个 URL ...
- 获取URL中的某段字符
1. Location 对象 Location 对象包含有关当前 URL 的信息. Location 对象是 window 对象的一部分,可通过 window.Location 属性对其进行访问. ️ ...
- 如何获取url中的参数并传递给iframe中的报表
在使用报表软件时,用户系统左边一般有目录树,点击报表节点就会在右侧网页的iframe中显示出报表,同时点击的时候也会传递一些参数给网页,比如时间和用户信息等.如何使网页中的报表能够获取到传递过来的参数 ...
- 记录一次bug解决过程:velocity中获取url中的参数
一.总结 在Webx的Velocity中获取url中参数:$rundata.getRequest().getParameter('userId') 在Webx项目中,防止CSRF攻击(Cross-si ...
随机推荐
- day26 多继承
class A(object): def test(self): print('from A') class B(A): def test(self): print('from B') class C ...
- day12-13 文件操作b模式
为什么需要用到二进制的形式?我们默认的r w a 其实是rt wt at 即txt模式如果是图片,视频,音频,是无法用txt打开的,只能用b模式处理 b 模式是以字节形式打开 f = open(&qu ...
- LOJ #2721. 「NOI2018」屠龙勇士(set + exgcd)
题意 LOJ #2721. 「NOI2018」屠龙勇士 题解 首先假设每条龙都可以打死,每次拿到的剑攻击力为 \(ATK\) . 这个需要支持每次插入一个数,查找比一个 \(\le\) 数最大的数(或 ...
- 自学Zabbix之路15.1 Zabbix数据库表结构简单解析-Hosts表、Hosts_groups表、Interface表
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix之路15.1 Zabbix数据库表结构简单解析-Hosts表.Hosts_grou ...
- [UVALive 3661] Animal Run
图片加载可能有点慢,请跳过题面先看题解,谢谢 附:中文题面,[BZOJ1001]狼抓兔子 就要考联赛了,博客里题目的\(style\)都变了,几乎都是些套路啥的,这道题也比较套路 第一眼看这道题的感觉 ...
- 【BZOJ1822】[JSOI2010]冷冻波(二分,网络流)
[BZOJ1822][JSOI2010]冷冻波(二分,网络流) 题面 BZOJ 洛谷 题解 先预处理每个巫妖可以打到哪些小精灵,然后二分答案,网络流判定即可. #include<iostream ...
- 【转】安全加密(三):RFID标签防伪为生活开启安全模式
本文导读 随着RFID技术的快速发展和RFID电子标签的生产成本不断降低,RFID标签防伪技术的应用也得到了极大的普及,逐步出现在各行各业当中,如交通出行.票务安全.商品防伪等领域. RFID技术简介 ...
- 【AGC010D】Decrementing
Solution 日常博弈论做不出来. 首先,数值全部为1的局面先手必败. 在接下来的过程中,我们只关注那些大于1的数值. 按照官方题解的思路,首先想一个简化版的问题:没有除的操作,其余相同.那么局面 ...
- 【转】JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解
http://www.cnblogs.com/therunningfish/p/5524238.html JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsol ...
- Luogu 1351 NOIP 2014 联合权值(贪心,计数原理)
Luogu 1351 NOIP 2014 联合权值(贪心,计数原理) Description 无向连通图 G 有 n 个点,n-1 条边.点从 1 到 n 依次编号,编号为 i 的点的权值为 Wi, ...