如何在VC++6.0的程序中获得本机的IP地址? 恳请高人赐教! 要的是在网络属性中设置的IP,不是127.0.0.1 或 0.0.0.0 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 为什么不自己找MFC类库看一下,在CSocket里有 要在VC++6.0的程序中获得本机的IP地址,你可以使用GetNetworkParams函数。DWORD GetNetworkParams(PFIXED_INFO pFixedInfo,PULONG pOutBufLen);第一个参数指向FIXED_INFO结构体,函数调用后本机的所有ip配置信息都存放在这个结构体中。第二个参数是一个long型指针,表示这个结构体的长度。 //==== 1、得到主机的IP地址ULONG GetHostIPAddr( int nNo // 网卡编号,一般设置为0,表示第一个网卡){ char szHostName[100] = {0}; gethostname(szHostName, sizeof(szHostName)); hostent* he = gethostbyname(szHostName); return *((ULONG*)(he->h_addr_list[0]));} 还是有问题,1.MSDN中没有GetNetworkParams函数. 2.上面的代码获得的是局域网中服务器的主机名,所以的不到本地机器的IP. 当然有:例子://// Link with IPHlpAPI.lib//#include <stdio.h>#include <windows.h>#include <iphlpapi.h>main() { FIXED_INFO * FixedInfo; ULONG ulOutBufLen; DWORD dwRetVal; IP_ADDR_STRING * pIPAddr; FixedInfo = (FIXED_INFO *) GlobalAlloc( GPTR, sizeof( FIXED_INFO ) ); ulOutBufLen = sizeof( FIXED_INFO ); if( ERROR_BUFFER_OVERFLOW == GetNetworkParams( FixedInfo, &ulOutBufLen ) ) { GlobalFree( FixedInfo ); FixedInfo = GlobalAlloc( GPTR, ulOutBufLen ); } if ( dwRetVal = GetNetworkParams( FixedInfo, &ulOutBufLen ) ) { printf( "Call to GetNetworkParams failed. Return Value: %08x\n", dwRetVal ); } else { printf( "Host Name: %s\n", FixedInfo -> HostName ); printf( "Domain Name: %s\n", FixedInfo -> DomainName ); printf( "DNS Servers:\n" ); printf( "\t%s\n", FixedInfo -> DnsServerList.IpAddress.String ); pIPAddr = FixedInfo -> DnsServerList.Next; while ( pIPAddr ) { printf( "\t%s\n", pIPAddr ->IpAddress.String );//->IP? pIPAddr = pIPAddr ->Next; } } exit( 0 );} BOOL与bool C++怎么实现POST提交网页参数方法? 求助MFC线程通信 怎样才能使AnimateWindow显示的窗口可点击 跨网关数据发送问题 请教一个https协议分析的解决方法 test 送给自己的分 各位大哥,小弟需要用VC做串口通信,帮忙推荐资料 我是第一次来到CSDN,大家多关照! 请教:如何打开一个文本文件呢? 一个不应成问题的问题
ULONG GetHostIPAddr(
int nNo // 网卡编号,一般设置为0,表示第一个网卡
)
{
char szHostName[100] = {0};
gethostname(szHostName, sizeof(szHostName));
hostent* he = gethostbyname(szHostName);
return *((ULONG*)(he->h_addr_list[0]));
}
2.上面的代码获得的是局域网中服务器的主机名,所以的不到本地机器的IP.
例子:
//
// Link with IPHlpAPI.lib
//
#include <stdio.h>
#include <windows.h>
#include <iphlpapi.h>main() {
FIXED_INFO * FixedInfo;
ULONG ulOutBufLen;
DWORD dwRetVal;
IP_ADDR_STRING * pIPAddr; FixedInfo = (FIXED_INFO *) GlobalAlloc( GPTR, sizeof( FIXED_INFO ) );
ulOutBufLen = sizeof( FIXED_INFO );
if( ERROR_BUFFER_OVERFLOW == GetNetworkParams( FixedInfo, &ulOutBufLen ) ) {
GlobalFree( FixedInfo );
FixedInfo = GlobalAlloc( GPTR, ulOutBufLen );
} if ( dwRetVal = GetNetworkParams( FixedInfo, &ulOutBufLen ) ) {
printf( "Call to GetNetworkParams failed. Return Value: %08x\n", dwRetVal );
}
else {
printf( "Host Name: %s\n", FixedInfo -> HostName );
printf( "Domain Name: %s\n", FixedInfo -> DomainName );
printf( "DNS Servers:\n" );
printf( "\t%s\n", FixedInfo -> DnsServerList.IpAddress.String );
pIPAddr = FixedInfo -> DnsServerList.Next;
while ( pIPAddr ) {
printf( "\t%s\n", pIPAddr ->IpAddress.String );//->IP?
pIPAddr = pIPAddr ->Next;
}
}
exit( 0 );
}