精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>网络与通讯>>一个查询国内顶级域名的CGI

主题:一个查询国内顶级域名的CGI
发信人: love1974()
整理人: girlrong(1999-11-10 07:48:48), 站内信件
RED HAT LINUX6下编译通过(CGIC1.06版本)

#include <cgic.c>
/*#include <stdio.h>*/
#include <fcntl.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/socket.h>
/*#include <string.h>*/
#define  HOST_ADDR "159.226.1.19"
#define  HOST_PORT 80
int get_domain(char *buf,char *rst);
void cgi_out(char *error,char *rst);
int  cgiMain()
{
    FILE *mydebug;
    int s;
    int iResult;

    struct sockaddr_in addr;
    char strSubAddr[100],strBuffer[100],result[10000],tmp[10000];
    char domain[50],tmp_domain[50];
    int  ext_choose,k;
    char *ext[]={"com","net","org"};
    strcpy(domain,"");
    ext_choose=0;
    k=0;
    cgiFormStringNoNewlines("domain",domain,45);
    cgiFormSelectSingle("ext",ext,3,&ext_choose,0);

    if((domain==""))
       {
         cgi_out("Please Select Domain or Ext Name!\r\n","");
         return 0;
       }

    s=socket(AF_INET,SOCK_STREAM,0);
    if(s<0)
cgi_out("Create Socket Error! \r\n","");
addr.sin_family=AF_INET;
addr.sin_port=htons(HOST_PORT);
addr.sin_addr.s_addr=inet_addr(HOST_ADDR);
iResult=connect(s,(struct sockaddr *)&addr,sizeof(addr));
if(iResult<0)
{
/*error*/
cgi_out("Remote Server Connect Error!\r\n","");
close(s);
return 1;
}
else
{
sprintf(strSubAddr,"GET /cgi-bin/srdp?%s.%s.cn \r\n",
domain,ext[ext_choose]);
iResult=send(s,strSubAddr,strlen(strSubAddr),0);
do
{
iResult=recv(s,strBuffer,sizeof(strBuffer),0);
strncat(tmp,strBuffer,strlen(strBuffer)-strlen(strSubAddr)
);
}while(iResult!=0);
if(get_domain(tmp,result)==1)
cgi_out("<CENTER>
                      您选择的域名在域名数据库中没有找到,您可以注册此域
</CENTER><BR>","");
         else
             cgi_out("",result);
/*         mydebug=fopen("/home/liyuhua/query/query.debug","wt");
         fputs(strBuffer,mydebug);
         fclose(mydebug);*/

        }
   close(s);
   return 0;
 }
int get_domain(char *buf,char *rst)
{
   int i=0;
   char *move;
   
   char *sub_pointer_start,*sub_pointer_end;
   move=buf;
   if((sub_pointer_start=strstr(buf,"<pre>"))==NULL)
     {
       if((sub_pointer_start=strstr(buf,"<PRE>"))!=NULL)
           ;
     }

    if((sub_pointer_end=strstr(buf,"</pre>"))==NULL)
      {
        if((sub_pointer_end=strstr(buf,"</PRE>"))!=NULL)
           ;
       }
    if((sub_pointer_start==NULL)||(sub_pointer_end==NULL))
       return 1;

    strncpy(rst,sub_pointer_start+5,sub_pointer_end-sub_pointer_start)
;
    buf=move;
    return 0;
}
void cgi_out(char *error,char *rst)
{
  cgiHeaderContentType("text/html");
  fprintf(cgiOut,"<HTML><HEAD>\n");
  fprintf(cgiOut,"<TITLE>Search Domain Result</TITLE></HEAD>\n");
  fprintf(cgiOut,"<body bgcolor=#FFFFF background=/gif/back_3.jpg>\n")
;
  fprintf(cgiOut,"<CENTER><FONT color=blue size=5>域名查询结果

                          </CENTER><BR>");
  if(error!="")
    fprintf(cgiOut,error);
  else
    { 
      fprintf(cgiOut,"<pre>");
      fprintf(cgiOut,rst);
      fprintf(cgiOut,"</pre>");
    }
  fprintf(cgiOut,"<FORM>
                  <CENTER><INPUT onclick=history.back() type=button va
lue=
\" 返回 \"></CENTER>
                  </FORM>");
  fprintf(cgiOut,"\n</BODY></HTML>");
}

--
太太平平,不是我活着的目标;不温不火,不是我的性格。是云就该下雨,是火就该发光。 

那罐星砂送給你   
╭╯  ╰╮╭╯╰╮    願你心想事成 
║▃▃▃║║☆★║  這罐海水留給我 
║███║║☆★║  裝滿我的思念 

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.104.36.228]

[关闭][返回]