在MFC中如何获取电脑IP 主机名 网关 MAC 子网掩码等

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在MFC中如何获取电脑IP 主机名 网关 MAC 子网掩码等相关的知识,希望对你有一定的参考价值。

一个简单的程序 按下BUTTON后在相应的LIST中显示

参考技术A 网关:
bool CNetView::GetAdapterInfo(CString &strGwIp)

PIP_ADAPTER_INFO pAdapterInfo;
PIP_ADAPTER_INFO pAdapter = NULL;
DWORD dwRetVal = 0;

pAdapterInfo = (IP_ADAPTER_INFO *) malloc( sizeof(IP_ADAPTER_INFO) );
unsigned long ulOutBufLen = sizeof(IP_ADAPTER_INFO);

// Make an initial call to GetAdaptersInfo to get
// the necessary size into the ulOutBufLen variable
if (GetAdaptersInfo( pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW)

free(pAdapterInfo);
pAdapterInfo = (IP_ADAPTER_INFO *) malloc (ulOutBufLen);


if ((dwRetVal = GetAdaptersInfo( pAdapterInfo, &ulOutBufLen)) == NO_ERROR)

pAdapter = pAdapterInfo;
while (pAdapter)

TRACE("\tAdapter Name: \t%s\n", pAdapter->AdapterName);
TRACE("\tAdapter Desc: \t%s\n", pAdapter->Description);
TRACE("\tAdapter Addr: \t%ld\n", pAdapter->Address);
TRACE("\tIP Address: \t%s\n", pAdapter->IpAddressList.IpAddress.String);
TRACE("\tIP Mask: \t%s\n", pAdapter->IpAddressList.IpMask.String);
TRACE("\tGateway: \t%s\n", pAdapter->GatewayList.IpAddress.String);
strGwIp.Format("网关[%s]", pAdapter->GatewayList.IpAddress.String);
//AfxMessageBox(strGwIp);

TRACE("\t***\n");
if (pAdapter->DhcpEnabled)

TRACE("\tDHCP Enabled: Yes\n");
TRACE("\t\tDHCP Server: \t%s\n", pAdapter->DhcpServer.IpAddress.String);
TRACE("\tLease Obtained: %ld\n", pAdapter->LeaseObtained);

else
TRACE("\tDHCP Enabled: No\n");

if (pAdapter->HaveWins)

TRACE("\tHave Wins: Yes\n");
TRACE("\t\tPrimary Wins Server: \t%s\n", pAdapter->PrimaryWinsServer.IpAddress.String);
TRACE("\t\tSecondary Wins Server: \t%s\n", pAdapter->SecondaryWinsServer.IpAddress.String);

else
TRACE("\tHave Wins: No\n");
pAdapter = pAdapter->Next;


else

TRACE("Call to GetAdaptersInfo failed.\n");
return false;

free(pAdapterInfo);

return true;


// IP 地址

CString CGetdata::GetlocalIPAddress()

WORD wVersionRequested;
WSADATA wsaData;
CString Address;
char szHostname[128];
wVersionRequested=MAKEWORD(2,0);

if(WSAStartup(wVersionRequested,&wsaData)==0)

if(gethostname(szHostname,128)==0)

struct hostent *pHost;
int i;
pHost=gethostbyname(szHostname);
for(i=0;pHost!=NULL && pHost->h_addr_list[i]!=NULL;i++)

int j;
for(j=0;j<pHost->h_length;j++)

CString addr;
if(j>0)
Address+=".";
addr.Format("%u",(unsigned int)((unsigned char *)pHost->h_addr_list[i])[j]);
Address+=addr;



WSACleanup();

return Address;

Mac OS 名称问题及修改方法(修改终端中显示的hostname(主机名称) / 电脑名称 / 管理员名称 / LocalHostName(本地主机名称))

文章目录

Intro

今天在修改电脑主机名的时候发现 Mac 中有好几个名称, 很容易搞混, 因此整理了他们的区别以及对应的修改方法.

  • HostName: 主机名, 用于在系统上标识一台机器. 他和 IP 地址的区别是, hostname 用于在系统上标识一台机器; IP 地址是在 TCP/IP 网络中唯一标志一台机器. 联系到实际生活, 主机名相当于一个房子的主人名, 而 IP 地址相当于小区内这间房子的门牌号. [hostname 也就是打开终端, 出现在 “:~” 这两个符号前面的名字]
  • 管理员名称: 就是电脑在初始化的时候你设置的管理员的名称, 也是电脑开机的时候头像下面显示的名称, 在系统偏好设置-用户与群组中进行修改. [打开终端, 管理员名称会出现在每个命令行 “:~” 符号之后]

因此终端中命令行的开头为 HostName :~ 管理员名称$

  • ComputerName: 计算机名, 在进行 Airdrop 共享文件, 或者其他一些共享操作的时候, 其他人会以这个名字看到你的电脑. [打开访达 ComputerName 会显示在左侧的“位置”下面]
  • LocalHostName: 本地主机名, 本地网络上的电脑可以通过这个名字访问您你的电脑, LocalHostName是带有 .local 的电脑名称, 而且任何空格都会替换为连字符, 例如电脑的名称是 My Computer 则本地主机名就是 My-Computer.local, 本地主机名不区分大小写.


查看名称并修改

首先查看系统环境: sw_vers
如下:

ProductName:	Mac OS X
ProductVersion:	10.15.7
BuildVersion:	19H2

HostName

  • 查看 HostName scutil --get HostName or hostname or echo $HOSTNAME, 这三个命令都可以查看 HostName.
  • 修改 HostName sudo scutil --set HostName [HostName] [HostName] 的位置是你想要设置的 HostName.

修改之后退出 terminal,再次进入后名字即改变.


管理员名称

在图形化界面中直接操作: 【系统偏好设置 - 用户与群组】
这个名称一般是不能改的, 可以通过新建/删除用户的方式进行修改, 不多说


ComputerName

  • 查看 ComputerName scutil --get ComputerName
  • 修改 ComputerName scutil --set ComputerName [ComputerName] [ComputerName]的位置是你想要设置的ComputerName.

之后可以在访达左侧的“位置”下面看到这台电脑的名称, 也可以在【系统偏好设置 - 共享 - 电脑名称】中进行查看修改成功, 同时此处可以以直接修改 ComputerName.


LocalHostName

  • 查看LocalHostName scutil --get LocalHostName
  • 修改 LocalHostName sudo scutil --set LocalHostName [LocalHostName] [LocalHostName]的位置是你想要设置的LocalHostName.

在【系统偏好设置 - 共享 - 电脑名称】下面一行, 点击右侧的“编辑”按钮, 即可查看是否修改成功, 同样此处也可修改 LocalHostName.

参考文章如下, 表示感谢!
参考文章

以上是关于在MFC中如何获取电脑IP 主机名 网关 MAC 子网掩码等的主要内容,如果未能解决你的问题,请参考以下文章

python 实现获取电脑IP主机名Mac地址

MFC编程中如何获取本机网卡信息以及IP,DNS,网关等

MFC自己主动获取网络地址函数实现----广播地址,网关,子网掩码

ping IP通 ping 主机名不通 如何解决?

如何获取局域网内主机信息-连接网络帐号\密码

linux通过Python获取本机的ip,mac,网关,子网掩码,网卡名