今天给各位分享c语言获取主机的地址的知识,其中也会对c语言 取地址进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、求一C语言大神在线帮我写一段程序‘’请编写程序实现根据主机名获得IP地址信息,并将信息保存在文件中‘’2、用C语言写个程序:先获取本机MAC地址,据此得到Link Local地址(IPv6 Address)3、c语言,获取本机mac地址,那位大神解答下。4、如何用C语言获得本机IP地址5、请问 c语言怎样获取计算机ip地址啊6、请问 , 用c语言怎样获取ip地址啊 谢谢了
求一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(“”);
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;
}
用C语言写个程序:先获取本机MAC地址,据此得到Link Local地址(IPv6 Address)
麻烦,不爱动手,上网查一下,就那么两个api,一用就ok了。easy的很。
#include winsock2.h
#include Iphlpapi.h
#include stdio.h
void byte2Hex(unsigned char bData,unsigned char hex[])
{
int high=bData/16,low =bData %16;
hex[0] = (high 10)?(‘0’+high):(‘A’+high-10);
hex[1] = (low 10)?(‘0’+low):(‘A’+low-10);
}
int getLocalMac(unsigned char *mac) //获取本机MAC地址
{
ULONG ulSize=0;
PIP_ADAPTER_INFO pInfo=NULL;
int temp=0;
temp = GetAdaptersInfo(pInfo,ulSize);//第一次调用,获取缓冲区大小
pInfo=(PIP_ADAPTER_INFO)malloc(ulSize);
temp = GetAdaptersInfo(pInfo,ulSize);
int iCount=0;
while(pInfo)//遍历每一张网卡
{
// pInfo-Address 是MAC地址
for(int i=0;i(int)pInfo-AddressLength;i++)
{
byte2Hex(pInfo-Address[i],mac[iCount]);
iCount+=2;
if(i(int)pInfo-AddressLength-1)
{
mac[iCount++] = ‘:’;
}else
{
mac[iCount++] = ‘#’;
}
}
pInfo = pInfo-Next;
}
if(iCount 0)
{
mac[–iCount]=’\0′;
return iCount;
}
else return -1;
}
int main(int argc, char* argv[])
{
unsigned char address[1024];
if(getLocalMac(address)0)
{
printf(“mac-%s\n”,address);
}else
{
printf(“invoke getMAC error!\n”);
}
return 0;
}
需要这两个:iphlpapi.lib , ws2_32.lib 静态库(VC添加到工程LINK里)
c语言,获取本机mac地址,那位大神解答下。
有个简单的方法,提供给你个思路
system(“ipconfig /all tmp.txt”);
然后打开tmp.txt
查找本地连接 再找之后的Physical Address字符串,然后找冒号,
取这个冒号后面的值就是mac了
如何用C语言获得本机IP地址
struct in_addr addr;
hostent *pHost = ::gethostbyname(“www.easyaq.com”);//在此写入你自己电脑主机名字
switch (pHost-h_addrtype) {
case AF_INET:
printf(“internet网络地址类型(AF_INET)\n”);
break;
case AF_INET6:
printf(“internet网络地址类型(AF_INET)\n”);
break;
case AF_NETBIOS:
printf(“netbios网络地址类型(AF_NETBIOS)\n”);
break;
default:
printf(“其它地址类型 %d\n”, pHost-h_addrtype);
break;
}
printf(“\t地址长度: %d(字节)\n”, pHost-h_length);
addr.s_addr = *(u_long *) pHost-h_addr_list[0];
printf(“\t第一个IP地址为: %s\n”, inet_ntoa(addr));
请问 c语言怎样获取计算机ip地址啊
struct in_addr addr;
hostent *pHost = ::gethostbyname(“www.easyaq.com”);//在此写入你自己电脑主机名字
switch (pHost-h_addrtype) {
case AF_INET:
printf(“internet网络地址类型(AF_INET)\n”);
break;
case AF_INET6:
printf(“internet网络地址类型(AF_INET)\n”);
break;
case AF_NETBIOS:
printf(“netbios网络地址类型(AF_NETBIOS)\n”);
break;
default:
printf(“其它地址类型 %d\n”, pHost-h_addrtype);
break;
}
printf(“\t地址长度: %d(字节)\n”, pHost-h_length);
addr.s_addr = *(u_long *) pHost-h_addr_list[0];
printf(“\t第一个IP地址为: %s\n”, inet_ntoa(addr));
请问 , 用c语言怎样获取ip地址啊 谢谢了
看你要获得那里的ip地址
如果是本及机的话,就使用windows的API啊
#include “winsock.h”
WORD wVersionRequested;
WSADATA wsaData;
char name[255];
char* ip;
PHOSTENT hostinfo;
wVersionRequested = MAKEWORD( 2, 0 );
if ( WSAStartup( wVersionRequested, wsaData ) == 0 )
{
if( gethostname ( name, sizeof(name)) == 0)
{
if((hostinfo = gethostbyname(name)) != NULL)
{
ip = inet_ntoa (*(struct in_addr *)*hostinfo-h_addr_list);
}
}
// ip is ready
WSACleanup( );
}
c语言获取主机的地址的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言 取地址、c语言获取主机的地址的信息别忘了在本站进行查找喔。