当前位置:首页 » 编程语言 » c语言判断主机在不在线
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言判断主机在不在线

发布时间: 2023-01-04 16:43:43

1. 求一c语言大神在线帮我写一段程序‘’请编写程序实现根据主机名获得IP地址信息,并将信息保存在文件中‘’

#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <netdb.h>
using namespace std;

const char* dns_parse(const char* host) {
struct addrinfo hints;
struct addrinfo *result = NULL;
struct addrinfo *rp = NULL;
memset(&hints, 0, sizeof(struct addrinfo));
hints.ai_family = AF_UNSPEC; /* Allow any */
hints.ai_socktype = 0; /* Any */
hints.ai_flags = 0; /* No flags */
hints.ai_protocol = 0; /* Any protocol */

int error = getaddrinfo(host, NULL, &hints, &result);
if (error != 0) {
if (result) {
freeaddrinfo(result);
}
return "";
}

const char* ip = "";
const char* ipv6 = "";
const char* ipv4 = "";
char tmp[INET6_ADDRSTRLEN * 2] = {0};
for (rp = result; rp != NULL; rp = rp->ai_next) {
if (rp->ai_family == AF_INET && strlen(ipv4) == 0) {
const char *ret = inet_ntop(rp->ai_family,
&((struct sockaddr_in*)rp->ai_addr)->sin_addr,
tmp, (INET6_ADDRSTRLEN * 2));
if (ret != NULL) {
ipv4 = ret;
}
} else if (rp->ai_family == AF_INET6 && strlen(ipv6) == 0) {
const char *ret = inet_ntop(rp->ai_family,
&((struct sockaddr_in6*)rp->ai_addr)->sin6_addr,
tmp, (INET6_ADDRSTRLEN * 2));
if (ret != NULL) {
ipv6 = ret;
}
}
}
if (result) {
freeaddrinfo(result); // Not needed anymore
}

if (strlen(ipv6) > 0) {
ip = ipv6;
} else if (strlen(ipv4) > 0) {
ip = ipv4;
} else {
return "";
}
return ip;
}

void save_to_file(char* data, int len, const char* file_path) {
FILE *fp = fopen(file_path, "wb");
if (!fp) {
return;
}
fwrite(data, sizeof(char), len, fp);
fclose(fp);
}

int main() {
const char* ip = dns_parse("www..com");
printf("%s\n", ip);
int len = strlen(ip);
char* data = (char*)malloc(len + 1);
memcpy(data, ip, len);
data[len] = '\0';
save_to_file(data, len + 1, "a.txt");
free(data);
return 0;
}

2. c语言编程实现对电脑流量实时监测

监控包的发送和接收 然后做个界面 计算宽带和各种百分比 就行了

3. 写一个C语言程序: 能修改Linux 主机的IP、DHCP、DNS 等设置

可以调用system()函数。把linux系统命令拼成字符串,然后调用system去执行这个字符串就可以了。修改系统配置,需要root身份。
1、system函数:
原型:int
system(const
char
*
command);
功能:执行
dos(windows系统)

shell(Linux/Unix系统)
命令,参数字符串command为命令名;
说明:在windows系统中,system函数直接在控制台调用一个command命令。在Linux/Unix系统中,system函数会调用fork函数产生子进程,由子进程来执行command命令,命令执行完后随即返回原调用的进程;
头文件:stdlib.h;
返回值:命令执行成功返回0,执行失败返回-1。
2、例程:
#include<stdio.h>
#include<stdlib.h>
int main(){
system("del C:\\123.txt");//在控制台中,执行命令del C:\\123.txt,删除C盘目录下的123.txt文件
return 0;
}

4. 电脑C语言编程,求高手帮忙

1,源程序如下:
源程序如下:
#include<stdio.h>
int
main()
{
float
x,sum=0,avg=0,max,min;
int
i=1;
printf("请输入10个浮点型的数:\n");
scanf("%f",&x);
max=min=x;
while
(i<=9)
{
scanf("%f",&x);
sum=sum+x;
if
(x>max)
max=x;
else
min=x;
i=i+1;
}
avg=sum/10;
printf("和为:%.2f\n平均值为:%.2f\n最大值为:%.0f\n最小值为:%.0f\n",sum,avg,max,min);
return
0;
}

5. c语言 判断三个点是不是在一条直线上 在线等 点自定

#include"stdafx.h"
#include<stdio.h>
#include<math.h>
intmain()
{
floatx1,x2,x3,y1,y2,y3;
scanf("(%f,%f) ",&x1,&y1);
scanf("(%f,%f) ",&x2,&y2);
scanf("(%f,%f)",&x3,&y3);
if((y1-y2)/(x1-x2)==(y2-y3)/(x2-x3))
printf("在同一直线上。 ");
elseprintf("不在同一直线上。 ");
return0;
}

举例:输入

(1,2)

(2,4)

(4,8)

6. C语言脚本扫描出区域网内活动的主机

1、其实你可以写一个shell脚本,ping对方的主机,然后查看返回的结果($?)的值,就可以检测主机是否存活了。 2、或者你喜欢C语言的话,可以往网络编程那方面寻找答案,不过应该不难,只是我还没学到而已,暂时帮不了你。

7. 用C语言编程显示主机IP地址!

PcrazyC
-
高级经理
六级
的代码少调用了WSAStartup,没有对库进行初始化所以不会成功的.只要加上就没问题的了...BCHSHR说的库也要加进去才行...在CONSOLE模式和APPLICATION模式其实都是可以的...

8. 如何用C语言判断ip地址是否合法

可以试一下

#include<stdio.h>

intcheckIP(constchar*p)
{
intn[4];
charc[4];
if(sscanf(p,"%d%c%d%c%d%c%d%c",
&n[0],&c[0],&n[1],&c[1],
&n[2],&c[2],&n[3],&c[3])
==7)
{
inti;
for(i=0;i<3;++i)
if(c[i]!='.')
return0;
for(i=0;i<4;++i)
if(n[i]>255||n[i]<0)
return0;
return1;
}else
return0;
}

intmain()
{
constchar*x[]=
{
"192.168.1.1",
"10.0.0.1.",
"127.256.0.1",
"iugerjiogjioe",
"172.16,0.1",
0
};
constchar*m[]=
{
"不是合法的IP地址",
"是合法的IP地址"
};
inti=0;

while(x[i]!=0){
printf("%s%s ",x[i],m[checkIP(x[i])]);
++i;
}
return0;
}

9. C语言的定义问题 求大大帮忙

nRed是局部变量,没在main中定义。当然不能用。

10. 如何用C语言编程得到本地主机得IP和主机名

  1. c语言本身是不提供的。

  2. 在windows下使用系统命令或windows.h

  3. //列子

  4. #include"stdio.h"
    #include"conio.h"
    main()
    {
    inti,j;
    charip[20];
    chartemp[100];
    charch='';
    FILE*fp;
    system("ipconfig>d:\myip.txt");
    if((fp=fopen("d:\myip.txt","r"))==NULL)
    {
    printf("thefilecannotopen: Pressanykeytoexit:");
    getch();
    exit(1);
    }
    for(i=0;i<7;i++)
    {fgets(temp,80,fp);/*跳过一些行*/
    /*printf("%s ",temp);*/}
    fgets(temp,80,fp);
    i=0;j=0;
    while(temp[i++]!=':')
    ;
    while(temp[i]!=' ')
    ip[j++]=temp[i++];
    ip[j]=0;
    printf("IP=%s ",ip);
    fclose(fp);
    system("deld:\myip.txt");

    getch();
    }
  5. 在Linux下
  6. #include<stdio.h>;
    #include<sys/types.h>;
    #include<sys/socket.h>;
    #include<sys/ioctl.h>;
    #include<netinet/in.h>;
    #include<net/if.h>;
    #include<net/if_arp.h>;
    #include<arpa/inet.h>;
    #include<errno.h>;

    #defineETH_NAME"eth0"

    intmain()
    {
    intsock;
    structsockaddr_insin;
    structifreqifr;

    sock=socket(AF_INET,SOCK_DGRAM,0);
    if(sock==-1)
    {
    perror("socket");
    return-1;
    }

    strncpy(ifr.ifr_name,ETH_NAME,IFNAMSIZ);
    ifr.ifr_name[IFNAMSIZ-1]=0;

    if(ioctl(sock,SIOCGIFADDR,&ifr)<0)
    {
    perror("ioctl");
    return-1;
    }

    memcpy(&sin,&ifr.ifr_addr,sizeof(sin));
    fprintf(stdout,"eth0:%s ",inet_ntoa(sin.sin_addr));

    return0;
    }