當前位置:首頁 » 編程語言 » 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;
    }