探测网络设备(主机、路由器)存活的方法

来源:互联网 发布:键盘记录软件 隐蔽手机 编辑:程序博客网 时间:2024/06/06 17:07
//=======================ping============================
void ping_test(************)
{
    char command[100]="ping";
    char ipaddr[20];
    strcpy(ipaddr,ipaddress);
    strcat(command,ipaddr);
   
    system(command);
    printf("路由ping验证开启,等待%s响应!\n",ipaddress);
}
//==================tracerouet==========================
void traceroute_test(************)
{
    char command[100]="traceroute ";
    char ipaddr[20];
    strcpy(ipaddr,ipaddress);
    strcat(command,ipaddr);
    
    system(command);
    printf("路由traceroute验证开启,等待%s响应!\n",ipaddress);
}
//======================syn==============================
int syn_test(***********)
{
    char ipaddr[20];
    strcpy(ipaddr,ipaddress);
    int sockfd;
    struct sockaddr_in serv_addr;
    
    FILE *fp;
    fp = fopen("test.txt","w+");
    if(fp == NULL)
    {
        fprintf(fp,"打开文件错误!\n");
        return 0;
    }
    
    if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
    {
        fprintf(fp, "socket creating error!\n");
        return 0;
    }
    else
        printf("socket creating success!\n");
    
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = htons(PORT);
    serv_addr.sin_addr.s_addr = inet_addr(ipaddr);
    
    int c = connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(struct sockaddr));


    if(c == -1)
    {
        fprintf(fp,"%s : SYN探测包发送成功,等待回应...\n\n",ipaddr);
        if(errno == 111)
            fprintf(fp,"%s : Host is alive!",ipaddr);
        else if(errno == 113)
            fprintf(fp,"%s : No route to host!",ipaddr);
        else
        {
          if(errno == 146)
            fprintf(fp,"%s : Host is alive!",ipaddr);
          else if(errno == 148)
            fprintf(fp,"%s : No route to host!",ipaddr);
          else
            fprintf(fp,"Host is alive!但有错误值返回 : %d",errno);
        }
    }
    
    else if(c == 0)
    {
        fprintf(fp,"%s : SYN探测包发送成功,等待回应...\n\n",ipaddr);
        fprintf(fp,"%s : Host is alive!\n",ipaddr);
    }
    
    else
    {
        fprintf(fp,"%s : SYN探测包发送失败!\n\n",ipaddr);
        fprintf(fp,"Connect error ID : %d",c);
    }


    fclose(fp);
    close(sockfd);


    return 0;
}
0 0