问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-05-02 11:47

我来回答

5个回答

热心网友 时间:2022-06-19 23:00

Is_it:谢了,是你说的这样,下面的代码我改了,可以建立一个普通的工程或空程就行,但要加入相应的库ws2_32.lib,分千万别给我

还有,bchshr,你定义的是指针都没有初始化就用,行不行啊

bchshr:
问你一下,你的程序的确可以输出机器名和IP地址,但为什么我刚才也是用的和你相同的方法建立的一个空工程或者建立一个控制台应用程序,输入下面的语句不能达到目的了,搞了半天了,郁闷

#include <stdio.h>
#include <Winsock2.h>

int main()
{
int WSA_return;

WSADATA WSAData;
struct hostent aa;
struct hostent *host_entry=&aa;
char host_addr[256]={0};
char host_address[256]={0};
WORD temp=0x0101;
WSA_return=WSAStartup(temp,&WSAData);

gethostname(host_addr,256);
printf("webhost:%s\n",host_addr);

host_entry=gethostbyname(host_addr);
if(host_entry)
sprintf(host_address,"%d.%d.%d.%d",
(host_entry->h_addr_list[0][0]&0x00ff),
(host_entry->h_addr_list[0][1]&0x00ff),
(host_entry->h_addr_list[0][2]&0x00ff),
(host_entry->h_addr_list[0][3]&0x00ff));
printf("%s\n",host_address);
return 0;
}

热心网友 时间:2022-06-19 23:00

最简单的方法是用 ipconfig
为了把数取出来,放到程序里好使用,可以把 ipconfig内容 存入C:\\TEMP\\tmp.ip, 再取出来用。
下面程序运行完,IP 的 4 段 整数 存在 d1,d2,d3,d4 里。

#include <stdio.h>
void main()
{
FILE *fin;
char namein[]="C:\\TEMP\\tmp.ip";
char str1[64],str2[64];
char one_line[80];
char cmd[120];
int i,j,k;
int d1,d2,d3,d4;

sprintf(cmd,"ipconfig > %s",namein);
system(cmd);
fin = fopen(namein,"r");
while ( fgets(&one_line[0],80,fin) !=NULL ){
j = sscanf(one_line,"%s %s",&str1[0],&str2[0]);
if (j == 2 && strncmp(str2,"Address",7) ==0 ) {
for (i=1;i<50;i++) if (one_line[i] ==':') k = i;
break;
};
};
fclose(fin);
sscanf(&one_line[0]+k+1,"%d.%d.%d.%d", &d1,&d2,&d3,&d4);
printf("%d %d %d %d\n",d1,d2,d3,d4);
exit(0);
}

热心网友 时间:2022-06-19 23:01

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

热心网友 时间:2022-06-19 23:01

强悍。。
最简单的写法
#include"dos.h"
main()
{system("ipconfig");
}

热心网友 时间:2022-06-19 23:02

程序如下所示:完全满足你的要求
#include<winsock.h>
int WSA_return;
WSADATA WSAData;
HOSTENT *host_entry;
char host_name[256];
char host_address[256];
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
WORD temp=0x0101;
WSA_return=WSAStartup(temp,&WSAData);
if(WSA_return==0)
{
gethostname(host_name,256);
host_entry=gethostbyname(host_name);
if(host_entry!=0)
{
wsprintf(host_address,"%d.%d.%d.%d",
(host_entry->h_addr_list[0][0]&0x00ff),
(host_entry->h_addr_list[0][1]&0x00ff),
(host_entry->h_addr_list[0][2]&0x00ff),
(host_entry->h_addr_list[0][3]&0x00ff));
MessageBox(NULL,host_address,host_name,MB_OK);
}
}
WSACleanup();
return 0;
}
但是需要注意:用Visual C++6.0编译Windows C程序,使用Winsock API函数时,首先要把wsock32.lib添加到它的库模块中,否刚在链接的时候,会出现“error LNK2001”错误。添加wsock32.lib的具体步骤是:打开工程菜单,选择设置,在弹出的Project settings对话框中,点击link选项卡,然后在对象/库模块文本框中添加wsock32.lib。

我用的是win32模式,而不是win32 console application模式,原因是winsock中的函数是以win API为基础的。其中的主函数是WinMain()
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
中美有什么经济冲突 杨凌衡水实验中学高中学费是多少 蒂芙尼珍珠项链怎么清洗和保养? tiffany&amp;co 的缺点 如何保养蒂芙尼的项链? tiffany保养要多久时间 Tiffany珠宝需要多长时间保养? 人为什么活着,怎样活着都是无憾!! 孩子犟的不行家长怎么教育 有什么比较好用的游戏视频录制软件? 适用于Windows的10个好用的游戏录制软件 vc++ 定义IP地址的函数有那些? VC++黑客编程:如何获得IP地址和主机名 VC怎么取得本地IP地址 VC++如何获取本机的IP地址? VC中IP地址控件的使用 vc++ 显示ip地址方法 怎样用VC++编程显示本机的主机名和IP地址 vc2265打印机设置ip VC设置本机IP 婚姻如果不幸福,对自己接下来的生活有什么影响? 左小青宣布离婚,评论区意外和谐,这是怎么回事? 一段不堪回首的往事 折磨了我近20年的问题 请人生经验丰富或者婚姻生活美满的人士给与帮助 谢谢 女儿秀2亿元飞机,妻子马丽娟直播时,赵本山的豪宅,为何意外暴露? 她是国家级运动员,却意外成了春晚小品女神,还有个富豪老公,她是谁? 她曾是体操冠军,意外被姜文看中做演员,左小青如今过得怎样? 杨绛和杨澜的幸福婚姻,有这样一个共性,你知道吗? 结婚20年,无性婚姻10年,每天说不到10句话,这样的婚姻该如何继续? 美好幸福的婚姻是可以经营出来的,具体应该怎么做呢? 戴维.科宁斯 娱乐圈中有哪些隐藏的夫妻?哪对最让人意外? vc++如何获得计算机的名称和IP地址,用到哪些函数 VC++ 获取本机IP 怎样用VC程序对交换机进行IP配置 VC中获得网络IP地址 VC中IP指针初始化 VC,怎么通过自己的ip地址搜索当前局域网内的其它在线的主机的ip地址呢? 怎么用紫外线鉴别蜜蜡真假 什么是老蜜蜡 紫外线真的能区分蜜蜡的真假吗 蜜蜡用紫外线灯照了什么样? 手机没有声音,但打电话出去能听到对方的声音该怎么解决? 我的手机就是能听见声音的时候说不了话 能说话的时候听不了声音... 钩针FPF.BPF是什么针法 钩针FU是什么意思? 怎样在南昌大学教务管理系统上获取个人课表 FV 与FVA的区别是什么啊 我的电脑通过路由器上网,不能进入南昌大学教务管理系统,别的网页都能进。出了什么问题?如何解决? 钩针5k是什么意思 南昌大学学分在哪查询 fv是什么的缩写意思? 怎么在南昌大学教务管理系统查成绩?