📄 66.htm
字号:
<HTML><HEAD><TITLE>CTerm非常精华下载</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type></HEAD>
<BODY bgColor=#ffffff>
<TABLE border=0 cellPadding=0 cellSpacing=0 width=100% background=0044.jpg>
<BODY>
<TR>
<TD height=150 rowSpan=2 width="308" ><IMG alt=DDl_back.jpg height=129 width=300 src="DDl_back.jpg" ></TD>
<TD background=DDl_back2.jpg height=50 width="581" ><BIG><BIG><FONT face=黑体>
<P align=center >重拳出击 一网打尽</FONT></BIG></BIG></P></TD></TR>
<TR>
<TD bgColor=#0099ff borderColor=#0099ff height=5 width="581"></TD></TR>
<TR>
<TD align=middle colSpan=2 height=100 vAlign=top width="891" ><BR>
<p align=center>[<a href="清华bbs网络资源.htm">回到开始</a>][<a href="8.htm">上一层</a>][<a href="67.htm">下一篇</a>]
<hr><p align="left"><small>发信人: lhg (心魔), 信区: Winsock <br>
标 题: Re: 如何区分internet IP和局域网IP? <br>
发信站: BBS 水木清华站 (Mon Jul 26 18:05:43 1999) <br>
<br>
记得我以前帖过的呀 <br>
<br>
BOOL CTcp::GetLocalIP(short mode, unsigned char *pszIpAddress) <br>
{ <br>
SOCKET sk; <br>
INTERFACE_INFO InterfaceList[ MAXSIZE_INTERFACE_NUM ]; <br>
sockaddr_in * pAddress; <br>
sockaddr_in * pMask; <br>
unsigned long nBytesReturned; <br>
int nNumInterfaces; <br>
int i; <br>
int nFound; <br>
u_long nFlags; <br>
<br>
pszIpAddress[ 0 ] = '\0'; <br>
afxTraceEnabled = true; <br>
<br>
sk = WSASocket( AF_INET, SOCK_DGRAM, 0, 0, 0, 0 ); <br>
if ( SOCKET_ERROR == sk ){ <br>
TRACE( "Failed to get a socket. Error\n" ); <br>
TRACE( "Error Code : %d\n", WSAGetLastError()); <br>
return false; <br>
} <br>
<br>
if ( WSAIoctl( sk, <br>
SIO_GET_INTERFACE_LIST, <br>
0, <br>
0, <br>
&InterfaceList, <br>
sizeof(InterfaceList), <br>
&nBytesReturned, <br>
0, <br>
0 <br>
) == SOCKET_ERROR) { <br>
TRACE( "Failed calling WSAIoctl: error\n" ); <br>
TRACE( "Error Code : %d\n", WSAGetLastError()); <br>
closesocket( sk ); <br>
return false; <br>
} <br>
closesocket( sk ); <br>
<br>
<br>
nNumInterfaces = nBytesReturned / sizeof(INTERFACE_INFO); <br>
TRACE( "There are (%d) interfaces\n", nNumInterfaces ); <br>
<br>
nFound = FLAG_OFF; <br>
<br>
for ( i = 0; i < nNumInterfaces; i++ ) { <br>
pAddress = (sockaddr_in*)&(InterfaceList[i].iiAddress); <br>
pMask = (sockaddr_in*)&(InterfaceList[i].iiNetmask); <br>
nFlags = InterfaceList[i].iiFlags; <br>
<br>
if ( !( nFlags & IFF_UP )){ <br>
continue; <br>
} <br>
<br>
switch ( mode ){ <br>
case FLAG_LOCAL_NETWORK: // 局域网 <br>
if ( nFlags & IFF_POINTTOPOINT ){ <br>
break; <br>
} <br>
if ( nFlags & IFF_LOOPBACK ){ <br>
break; <br>
} <br>
} <br>
if ( strcmp( inet_ntoa(pAddress->sin_addr), NULL_IP_ADDRESS ) == 0 ) <br>
break; <br>
} <br>
if ( strcmp( inet_ntoa(pMask->sin_addr), NULL_NETMASK ) == 0 ){ <br>
break; <br>
} <br>
strcpy((char*)pszIpAddress, inet_ntoa(pAddress->sin_addr)); <br>
nFound = FLAG_ON; <br>
break; <br>
case FLAG_DIALUP_NETWORK: // 拨号 <br>
if ( nFlags & IFF_POINTTOPOINT ){ <br>
strcpy((char*)pszIpAddress, inet_ntoa(pAddress->sin_addr)); <br>
nFound = FLAG_ON; <br>
} <br>
break; <br>
default: <br>
return false; <br>
break; <br>
} <br>
<br>
if ( FLAG_ON == nFound ){ <br>
break; <br>
} <br>
<br>
} <br>
<br>
// found a valid ip address <br>
if ( FLAG_ON == nFound ){ <br>
return true; <br>
} <br>
return false; <br>
} <br>
<br>
<br>
【 在 energy (长白山) 的大作中提到: 】 <br>
: 通过拨号上网的机器, 有两个IP, 有程序能枚举出来 <br>
: 可是程序怎么确定到底那个是internet的IP呢? <br>
: 笨的办法也有, 希望大虾给出比较经典的办法. <br>
: 谢了 <br>
<br>
<br>
-- <br>
<br>
问世间 情为何物 直教生死相许 <br>
天南地北双飞客 老翅几回寒暑 <br>
欢乐趣 离别苦 就中更有痴儿女 <br>
君应有语 渺万里层云 <br>
千山暮雪 只影向谁去 <br>
<br>
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: lhg.ncu.edu.cn] <br>
发信人: energy (长白山), 信区: Winsock <br>
标 题: Re: 如何区分internet IP和局域网IP? <br>
发信站: BBS 水木清华站 (Mon Jul 26 21:04:18 1999) <br>
<br>
多谢. 可是为什么在VC6的MSDN中, WSAIoctl的第二个调用参数 <br>
找不到SIO_GET_INTERFACE_LIST? <br>
<br>
还没编译. <br>
<br>
-- <br>
http://obase.163.net <br>
‖似水 ‖ <br>
‖ 流年‖ <br>
<br>
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.192.242.206] <br>
发信人: lhg (心魔), 信区: Winsock <br>
标 题: Re: 如何区分internet IP和局域网IP? <br>
发信站: BBS 水木清华站 (Tue Jul 27 09:31:51 1999) <br>
<br>
<br>
忘了贴H文件了 <br>
<br>
#include <winsock2.h> <br>
#include <mbstring.h> <br>
#include <Ws2tcpip.h> <br>
<br>
//本地机NETWORK INTERFACE的最大数 <br>
#define MAXSIZE_INTERFACE_NUM 20 <br>
<br>
//点分IP地址字符串的最大长度(255.255.255.255) <br>
#define MAXSIZE_IP_ADDRESS 15 <br>
<br>
//点分IP地址字符串的最大长度(255.255.255.255) <br>
#define MAX_IP_ADDRESS_LENGTH 15 <br>
//点分IP地址字符串的最小长度(1.1.1.1) <br>
#define MIN_IP_ADDRESS_LENGTH 7 <br>
<br>
#define FLAG_LOCAL_NETWORK 1 // 局域网 <br>
#define FLAG_DIALUP_NETWORK 2 // 拨号 <br>
<br>
#define FLAG_ON 1 // ON <br>
#define FLAG_OFF 0 // OFF <br>
<br>
#define NULL_IP_ADDRESS "0.0.0.0" <br>
#define NULL_NETMASK "0.0.0.0" <br>
<br>
【 在 energy (长白山) 的大作中提到: 】 <br>
: 多谢. 可是为什么在VC6的MSDN中, WSAIoctl的第二个调用参数 <br>
: 找不到SIO_GET_INTERFACE_LIST? <br>
: 还没编译. <br>
<br>
<br>
-- <br>
<br>
问世间 情为何物 直教生死相许 <br>
天南地北双飞客 老翅几回寒暑 <br>
欢乐趣 离别苦 就中更有痴儿女 <br>
君应有语 渺万里层云 <br>
千山暮雪 只影向谁去 <br>
<br>
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: lhg.ncu.edu.cn] <br>
</small><hr>
<p align="center">[<a href="清华bbs网络资源.htm">回到开始</a>][<a href="8.htm">上一层</a>][<a href="67.htm">下一篇</a>]<p align="center" ><font face="黑体" size=5><big>网络资源大全</big></font></p>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -