RT

解决方案 »

  1.   

    应该是搜索对方的端口号能否连接吧?如HTTP代理:443
      

  2.   

    说白了,就一个一个的试,比如你试某个IP和端口能否请求到网页。附一个别人的代码:
    ------------------------------cut here isbase-----------------------------
       /* this codez describe how to search a PROXY server
       *
       * by
       *
       * zer9
       * ====
       * [email protected]
       *
       * test on slackware 2.0.33
       * cc proxyht.c -o proxyht.c
       */
    #include <stdio.h>
    #include <string.h>
    #include <sys/types.h>
    #include <netinet/in.h>
    #include <netdb.h>
    #include <sys/socket.h>
    #include <signal.h>
    #define DefaultProxyPort 8080 //default proxy port 8080
    #define MSG1 "GET http://www.maxtor.com HTTP/1.1\n" //1 --change (1 ,2)
    #define MSG2 "Host: www.maxtor.com\n" //2 to search
    #define MSG3 "Accept: */*\n" // other sit e #define MSG4 "Pragma: no-cache\n"
    #define MSG5 "User-Agent: ProxyHT 0.01\n\n" #define KEYWORD "Maxtor Corp" // this is
    keyword #define TIMEOUT 30
    void alarm_handler(int w)
    {
    alarm(0);
    printf("Time Out!\n");
    }
    int main(int argc,char *argv[])
    {
    struct in_addr Target;
    struct hostent *he;
    struct sockaddr_in sin;
    int s,ProxyPort;
    char recvbuf1[5000];
    char recvbuf2[10000];
    if(argc==2)
    ProxyPort=DefaultProxyPort;
    else
    if(argc==3)
    ProxyPort=atoi(argv[2]);
    else
    {
    printf("ProxyHT 0.01 by zer9 mail:[email protected]\n");
    printf("usage: %s [proxy_port]\n",argv[0]);
    return 0;
    }
    if((he=gethostbyname(argv[1]))!=NULL)
    bcopy(he->h_addr,(char *)&Target.s_addr,he->h_length);
    else
    Target.s_addr=inet_addr(argv[1]);
    if(Target.s_addr==-1)
    {
    perror("gethostbyname");
    return -1;
    }
    printf("ProxyHT 0.01 by zer9 mail:
    [email protected]\n");
    if((s=socket(AF_INET,SOCK_STREAM,0))<0)
    {
    perror("socket");
    return -1;
    }
    sin.sin_family=AF_INET;
    sin.sin_port=htons(ProxyPort);
    sin.sin_addr.s_addr=Target.s_addr;
    if(connect(s,(struct sockaddr*)&sin,sizeof(sin))<0)
    {
    perror("connect");
    return -1;
    }
    bzero(recvbuf1,sizeof(recvbuf1));
    bzero(recvbuf2,sizeof(recvbuf2));
    printf("%s start verifying... waiting a while please\n",argv[1]);
    signal(SIGALRM,alarm_handler);
    send(s,MSG1,strlen(MSG1),0);
    send(s,MSG2,strlen(MSG2),0);
    send(s,MSG3,strlen(MSG3),0);
    send(s,MSG4,strlen(MSG4),0);
    send(s,MSG5,strlen(MSG5),0);
    1alarm(TIMEOUT);
    recv(s,recvbuf1,sizeof(recvbuf1),0);
    recv(s,recvbuf2,sizeof(recvbuf2),0);
    alarm(0);
    //if u want to debug , open follow two lines
    //printf("%s\n",recvbuf1);
    //printf("%s\n",recvbuf2);
    if(strstr(recvbuf1,"HTTP/1.1 200"))
    {
    if(strstr(recvbuf2,KEYWORD))
    {
    printf("hahaha... there's something found! \n");
    close(s); return 0;
    }
    }
    else
    {
    if(strstr(recvbuf1,"HTTP/1.1 404"))
    {
    printf("woo! I found one,but dont free...\n");
    close(s);
    return 0;
    }
    }
    close(s);
    printf("sorry.dont hit me please,nexttime i *MUST* find one.\n");
    return 0;
    }
    ---Cut Here---------------http://www.isbase.com------------------------------
      

  3.   

    socket4、socket5的试验怎么做呢?