如何获得本机IP地址,请高手指点!谢谢!

beijingshizi 2002-01-06 06:30:03
WNetOpenEnum函数使用的头文件是什么?

是winsock2.h吗?可是我使用的时候报错
...全文
157 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
beijingshizi 2002-01-07
  • 打赏
  • 举报
回复
谢谢凡星老兄,不凡嘛~~^_^
easydw 2002-01-07
  • 打赏
  • 举报
回复
不用客气
好东西要大家分享嘛!
easydw 2002-01-06
  • 打赏
  • 举报
回复
WORD wVersionRequested;
WSADATA wsaData;
char name[255];
CString 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);
}
}
WSACleanup( );
}

以上程序在win98、win2k下测试通过
注释:name为本机名称,ip为本机ip地址;
florist2000 2002-01-06
  • 打赏
  • 举报
回复
gethostname
gethostbyname
莫等闲 2002-01-06
  • 打赏
  • 举报
回复
// 记得先初始化SOCKET
char name[30];
ZeroMemory(name,sizeof(char)*30);
gethostname(name,30);
struct hostent *myhost;
myhost = gethostbyname(name);
char* myip = inet_ntoa(*((struct in_addr*)myhost->h_addr_list[0]));
beijingshizi 2002-01-06
  • 打赏
  • 举报
回复
这个我知道,然后呢?
如果是VER_PLATFORM_WIN32_WINDOWS的话?在那儿找到?
SecretGarden 2002-01-06
  • 打赏
  • 举报
回复
Win2K和Win98不一样,先要判断PlatformVersion
beijingshizi 2002-01-06
  • 打赏
  • 举报
回复
那如何得到?
SecretGarden 2002-01-06
  • 打赏
  • 举报
回复
为什么要这么麻烦?
注册表里有.
beijingshizi 2002-01-06
  • 打赏
  • 举报
回复
一位同仁给的例子,搞不定,请大家看看,谢了!
#include "winsock2.h" ??????

CString strTemp;
struct hostent *host;
struct in_addr *ptr; // 获取IP地址的结构
DWORD dwScope = RESOURCE_CONTEXT;
NETRESOURCE *NetResource = NULL;
HANDLE hEnum;
WNetOpenEnum( dwScope, NULL, NULL, NULL, &hEnum );
WSADATA wsaData;
WSAStartup(MAKEWORD(1,1),&wsaData);
if ( hEnum )
{
DWORD Count = 0xFFFFFFFF;
DWORD BufferSize = 2048;
LPVOID Buffer = new char[2048];
WNetEnumResource( hEnum, &Count, Buffer, &BufferSize );
NetResource = (NETRESOURCE*)Buffer;
char szHostName[200];
for ( unsigned int i = 0; i < BufferSize/sizeof(NETRESOURCE);
i++, NetResource++ )
{
if ( NetResource->dwUsage == RESOURCEUSAGE_CONTAINER &&
NetResource->dwType == RESOURCETYPE_ANY )
{
if ( NetResource->lpRemoteName )
{
CString strFullName = NetResource->lpRemoteName;
if ( 0 == strFullName.Left(2).Compare("\\\\") )
strFullName = strFullName.Right(strFullName.GetLength()-2);
gethostname( szHostName, strlen( szHostName ) );
host = gethostbyname(strFullName);
if(host == NULL) continue;
ptr = (struct in_addr *) host->h_addr_list[0];
// 211.40.35.76 分割成如下形式.
int a = ptr->S_un.S_un_b.s_b1; // 211
int b = ptr->S_un.S_un_b.s_b2; // 40
int c = ptr->S_un.S_un_b.s_b3; // 35
int d = ptr->S_un.S_un_b.s_b4; // 76
strTemp.Format("%s --> %d.%d.%d.%d",strFullName,a,b,c,d);
AfxMessageBox(strTemp);
}
}
}
delete Buffer;
WNetCloseEnum( hEnum );
}
WSACleanup();

 利用IP,用C#来获得远程主机的MAC地址 Posted on 2007-05-07 21:03 采飞扬 阅读(336) 评论(0)  编辑 收藏

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧