InternetReadFile获取特定行
InternetReadFile get specificity line
本文关键字:获取 InternetReadFile 更新时间:2023-10-16
我需要帮助从网页上获得第一行,找到了一个可以与ipchicken.com一起使用的小脚本。但我不想用我的网络脚本运行它,发布原始代码,因为我对所有事情都很生气。。。为此!我在这里搜索,但没有找到,我发布了一个问题。。
但它需要正确编辑才能使用minephp脚本。。php>文件.php?get=192.168.1.1端口88 上的ver或ip
switch($_GET['get'])
{
case "ip" :
echo ($_SERVER['REMOTE_ADDR']);
break;
case "ver" :
print "0.1.1";
break;
default :
break;
}
这是原始的c++代码>
char *getwebpage(char *hostname, char *uri, unsigned long *total)
{
if(!hostname || !uri || !total) return (char *)0;
*total = 0;
char *headers1 = "Accept: text/html, */*nAccept-Language: en-GBnAccept-Encoding: nonenHost: ";
char *headers2 = (char *)malloc(strlen(headers1) + strlen(hostname) + 2);
sprintf(headers2, "%s%sn", headers1, hostname);
HINTERNET session = InternetOpen("Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
HINTERNET connect = InternetConnect(session, hostname, 80, "", "", INTERNET_SERVICE_HTTP, 0, 0);
HINTERNET http = HttpOpenRequest(connect, "GET", uri, HTTP_VERSION, NULL, 0, INTERNET_FLAG_DONT_CACHE, 0);
HttpSendRequest(http, headers2, strlen(headers2), NULL, 0);
free(headers2);
unsigned long read;
char buffer[1024];
char *final = (char *)malloc(1024);
memset(buffer, 0, 1024);
while(InternetReadFile(http, buffer, 1024, &read) && (read != 0)){
CopyMemory((final + *total), buffer, read);
*total += read;
final = (char *)realloc(final, (*total + 1024));
memset((final + *total), 0, 1024);
}
InternetCloseHandle(http);
InternetCloseHandle(connect);
InternetCloseHandle(session);
return final;
}
int getmyipaddress(char *buffer)
{
unsigned long length;
char *webpage = getwebpage("www.ipchicken.com", "/", &length);
if(!webpage || length == 0) return 0;
int result = 0;
char *start = strstr(webpage, "<b>");
if(start){
start += 3;
while(*start <= ' ') start++;
char *end = start;
while(*end > ' ') end++;
*end = 0;
strcpy(buffer, start);
result = 1;
}
free(webpage);
return result;
}
和。。是如何添加这样的端口选择->
char *getwebpage(char *hostname, char *uri, char *port, unsigned long *total)
HINTERNET connect = InternetConnect(session, hostname, port, "", "", INTERNET_SERVICE_HTTP, 0, 0);
您说您的服务在88端口,但您呼叫:
HINTERNET connect = InternetConnect(session, hostname, 80, ....
所以可能改为:
HINTERNET connect = InternetConnect(session, hostname, 88, ....
尝试执行InternetReadFile(http,&buffer,1024,&read)。我不确定这是否能解决你的问题,但我确信函数InternetReadFile()中必须有一个指向缓冲区的指针,调用
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用指针从C++中的数组中获取最大值
- 如何获取std::result_of函数的返回类型
- 如何在openssl-ecc中获取十六进制格式的私钥
- 使用Unreal C++获取VR耳机的世界位置/方向
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 从C字符串中获取奇怪的字符串长度
- 为什么我的for循环不能正确获取argv
- 从python中调用C++函数并获取返回值
- 如何获取一个数字的前3位
- 获取字符串的长度并将其分配给数组
- 无法获取菜单选择以运行函数.C++
- 数组长度,为什么从命令行获取时不能使用它?
- Boost Spirit,获取迭代器内部语义动作
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- 具有默认值的引用获取函数
- xmake总是报告:错误:无法获取cxx的程序,为什么
- 在c++中获取大文件的大小