0

我需要有关从网页获取第一行的帮助,找到了一个与 ipchicken.com 一起使用的小脚本。但我不会用我的网络脚本运行它,发布原始代码,因为我对所有事情都很生气......为此!我在这里搜索,但我没有找到,我发布了一个问题..

但它需要正确编辑才能与我的 php 脚本一起使用 .. php > file.php?get=ver 或 192.168.1.1 端口 88 上的 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-GB\nAccept-Encoding: none\nHost: ";
    char *headers2 = (char *)malloc(strlen(headers1) + strlen(hostname) + 2);
    sprintf(headers2, "%s%s\n", 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);
4

2 回答 2

1

您说您的服务位于端口 88,但您调用:

HINTERNET connect = InternetConnect(session, hostname, 80, ....

所以也许改为:

HINTERNET connect = InternetConnect(session, hostname, 88, ....
于 2012-03-06T22:16:28.647 回答
0

尝试做 InternetReadFile(http, &buffer, 1024, &read)。我不确定这是否能解决您的问题,但我很确定在函数 InternetReadFile() 调用中必须有一个指向缓冲区的指针

于 2016-11-28T13:10:05.663 回答