当前位置:  技术问答>linux和unix

上周去迅雷面试,郁闷死了,题好难,这题不会,大家帮看看。

    来源: 互联网  发布时间:2017-02-19

    本文导语:  www.xunlei.com被解析到10个ip,现要监控http://www.xunlei.com/index.html 比较10个点的index.html内容是否相同,写出详细思路 | [User:root Time:20:03:55 Path:/home/liangdong/c]$ nslookup www.xunlei.com Server:         10.65.1.1 Addr...

www.xunlei.com被解析到10个ip,现要监控http://www.xunlei.com/index.html 比较10个点的index.html内容是否相同,写出详细思路

|
[User:root Time:20:03:55 Path:/home/liangdong/c]$ nslookup www.xunlei.com
Server:         10.65.1.1
Address:        10.65.1.1#53

Non-authoritative answer:
www.xunlei.com  canonical name = www.co.sandai.net.
Name:   www.co.sandai.net
Address: 121.14.82.141
Name:   www.co.sandai.net
Address: 121.14.82.142
Name:   www.co.sandai.net
Address: 119.147.41.48
Name:   www.co.sandai.net
Address: 119.147.41.83
Name:   www.co.sandai.net
Address: 121.14.82.140

[User:root Time:20:04:00 Path:/home/liangdong/c]$ cat src/main.c 
#include 
#include 
#include 
#include 
#include 
#include 

int main(int argc, char* const argv[]) {
        struct addrinfo *res;
        struct addrinfo hint;

        memset(&hint, 0, sizeof(hint));
        hint.ai_socktype = SOCK_STREAM;
        hint.ai_flags = AI_ADDRCONFIG;

        if (0 != getaddrinfo("www.xunlei.com", NULL, &hint, &res)) {
                perror("getaddrinfo => ");
                return -1;
        }

        char ip_str[50];
        sa_family_t family;
        struct sockaddr_in *ipv4_addr;
        struct sockaddr_in6 *ipv6_addr;
        const void *ip_addr = NULL;

        for ( ; res != NULL; res = res->ai_next) {
                family = res->ai_family;
                switch (family) {
                        case AF_INET:
                                ipv4_addr = (struct sockaddr_in*)res->ai_addr;
                                ip_addr = (const void*)&(ipv4_addr->sin_addr);
                                break;
                        case AF_INET6:
                                ipv6_addr = (struct sockaddr_in6*)res->ai_addr;
                                ip_addr = (const void*)&(ipv6_addr->sin6_addr);
                                break;
                        default:
                                break;
                }
                const char *ret = inet_ntop(res->ai_family, ip_addr, ip_str, (socklen_t)sizeof(ip_str));
                if (ret != NULL) {
                        printf("%sn", ret);
                }
        }

        return 0;
}


以上是C和SHELL获取DNS的方法,剩下的就是C里做TCP连接请求与应答,SHELL里用curl即可,注意xunlei要求Host:必须是www.xunlei.com, 否则将拒绝服务。

下面是php的代码,因为简单所以写了一下:

[User:root Time:20:35:43 Path:/home/liangdong/php]$ php xunlei.php 
358cc42d2669f32e361de6a185a312aa
358cc42d2669f32e361de6a185a312aa
358cc42d2669f32e361de6a185a312aa
358cc42d2669f32e361de6a185a312aa
358cc42d2669f32e361de6a185a312aa
all the same
[User:root Time:20:35:54 Path:/home/liangdong/php]$ cat xunlei.php 

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Ubuntu中安装迅雷的问题
  • 勇迅雷下载文件時服务器返回数据包 UNKNOWN 400 Bad Request
  • 在linux下面怎么安程序啊?我刚裝了一个 linux,下了一个迅雷安装程序,可是不知道怎么安装啊?真心请教。
  • PHP生成迅雷、快车、旋风等软件的下载链接代码实例
  • C++调用迅雷接口解析XML下载功能(迅雷下载功能)
  • C#实现调用迅雷下载的方法
  • 迅雷不能完全下载文件


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3