📄 getifaces.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><html lang="en"><head><title>Winsock Programmer's FAQ: Get Interface Information</title><link rel="Stylesheet" type="text/css" href="../faq.css"></head><body bgcolor="#ffffee" text="#000000" link="#491e00" vlink="#7d2e01" alink="#da7417"><!-- ---- Header Bar ---- --><table border="0" width="95%" bgcolor="#006000" cellpadding="5" cellspacing="3" align="center"> <tr> <td align="left" bgcolor="#e0e0c0"> <font size="2" face=Verdana,Arial,Helvetica> <b><a href="../examples/ipaddr.html"><<</a></b> </font> </td> <td align="center"> <font face=Verdana,Arial,Helvetica color="#ffffee"> <p align=center class=bigger3><b> Winsock Programmer's FAQ<br> Example: How to Get the Interface List </b></p> </font> </td> <td align="right" bgcolor="#e0e0c0"> <font size="2" face=Verdana,Arial,Helvetica> <b><a href="../examples/getmac-netbios.html">>></a></b> </font> </td> </tr></table><!-- ---- Body Table ---- --><table width="95%" border="0" cellpadding="10"> <tr valign="top"> <td><p>This example shows how to get the computer's network interface list,along with associated information like the broadcast addresses, thenetmasks, and some of the interface's capabilities. This program isactually a semi-useful tool, sort of like an output-only version of theUnix <tt>ifconfig</tt> program. However, its output is significantlymore readable.</p><p>This program requires Winsock 2. It definitely works under WindowsNT 4.0 if you have at least Service Pack 3 installed and perhaps alsounder Windows 98. This sample reportedly does not work on Windows 95.</p><hr noshade size=1 color=#404040><h4 class=lmargin><a href="../examples/src/getifaces.cpp">getifaces.cpp</a></h4><pre><font color="#444444">// Borland C++ 5.0: bcc32.cpp getifaces.cpp ws2_32.lib</font><font color="#444444">// Visual C++ 5.0: cl getifaces.cpp ws2_32.lib </font><font color="0000ff"><strong>#include <font color="#008000"><iostream.h></font></strong></font><font color="0000ff"><strong>#include <font color="#008000"><winsock2.h></font></strong></font><font color="0000ff"><strong>#include <font color="#008000"><ws2tcpip.h></font></strong></font><strong>int</strong> <font color="#2040a0">doit</font><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF"><strong>{</strong></font> <font color="#2040a0">SOCKET</font> <font color="#2040a0">sd</font> <font color="4444FF">=</font> <font color="#2040a0">WSASocket</font><font color="4444FF">(</font><font color="#2040a0">AF_INET</font>, <font color="#2040a0">SOCK_DGRAM</font>, <font color="#FF0000">0</font>, <font color="#FF0000">0</font>, <font color="#FF0000">0</font>, <font color="#FF0000">0</font><font color="4444FF">)</font><font color="4444FF">;</font> <strong>if</strong> <font color="4444FF">(</font><font color="#2040a0">sd</font> <font color="4444FF">=</font><font color="4444FF">=</font> <font color="#2040a0">SOCKET_ERROR</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font> <font color="#2040a0">cerr</font> <font color="4444FF"><</font><font color="4444FF"><</font> <font color="#008000">"Failed to get a socket. Error "</font> <font color="4444FF"><</font><font color="4444FF"><</font> <font color="#2040a0">WSAGetLastError</font><font color="4444FF">(</font><font color="4444FF">)</font> <font color="4444FF"><</font><font color="4444FF"><</font> <font color="#2040a0">endl</font><font color="4444FF">;</font> <strong>return</strong> <font color="#FF0000">1</font><font color="4444FF">;</font> <font color="4444FF"><strong>}</strong></font> <font color="#2040a0">INTERFACE_INFO</font> <font color="#2040a0">InterfaceList</font><font color="4444FF">[</font><font color="#FF0000">20</font><font color="4444FF">]</font><font color="4444FF">;</font> <strong>unsigned</strong> <strong>long</strong> <font color="#2040a0">nBytesReturned</font><font color="4444FF">;</font> <strong>if</strong> <font color="4444FF">(</font><font color="#2040a0">WSAIoctl</font><font color="4444FF">(</font><font color="#2040a0">sd</font>, <font color="#2040a0">SIO_GET_INTERFACE_LIST</font>, <font color="#FF0000">0</font>, <font color="#FF0000">0</font>, <font color="4444FF">&</font><font color="#2040a0">InterfaceList</font>, <strong>sizeof</strong><font color="4444FF">(</font><font color="#2040a0">InterfaceList</font><font color="4444FF">)</font>, <font color="4444FF">&</font><font color="#2040a0">nBytesReturned</font>, <font color="#FF0000">0</font>, <font color="#FF0000">0</font><font color="4444FF">)</font> <font color="4444FF">=</font><font color="4444FF">=</font> <font color="#2040a0">SOCKET_ERROR</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font> <font color="#2040a0">cerr</font> <font color="4444FF"><</font><font color="4444FF"><</font> <font color="#008000">"Failed calling WSAIoctl: error "</font> <font color="4444FF"><</font><font color="4444FF"><</font> <font color="#2040a0">WSAGetLastError</font><font color="4444FF">(</font><font color="4444FF">)</font> <font color="4444FF"><</font><font color="4444FF"><</font> <font color="#2040a0">endl</font><font color="4444FF">;</font> <strong>return</strong> <font color="#FF0000">1</font><font color="4444FF">;</font> <font color="4444FF"><strong>}</strong></font> <strong>int</strong> <font color="#2040a0">nNumInterfaces</font> <font color="4444FF">=</font> <font color="#2040a0">nBytesReturned</font> / <strong>sizeof</strong><font color="4444FF">(</font><font color="#2040a0">INTERFACE_INFO</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="#2040a0">cout</font> <font color="4444FF"><</font><font color="4444FF"><</font> <font color="#008000">"There are "</font> <font color="4444FF"><</font><font color="4444FF"><</font> <font color="#2040a0">nNumInterfaces</font> <font color="4444FF"><</font><font color="4444FF"><</font> <font color="#008000">" interfaces:"</font> <font color="4444FF"><</font><font color="4444FF"><</font> <font color="#2040a0">endl</font><font color="4444FF">;</font> <strong>for</strong> <font color="4444FF">(</font><strong>int</strong> <font color="#2040a0">i</font> <font color="4444FF">=</font> <font color="#FF0000">0</font><font color="4444FF">;</font> <font color="#2040a0">i</font> <font color="4444FF"><</font> <font color="#2040a0">nNumInterfaces</font><font color="4444FF">;</font> <font color="4444FF">+</font><font color="4444FF">+</font><font color="#2040a0">i</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font> <font color="#2040a0">cout</font> <font color="4444FF"><</font><font color="4444FF"><</font> <font color="#2040a0">endl</font><font color="4444FF">;</font> <font color="#2040a0">sockaddr_in</font> <font color="4444FF">*</font><font color="#2040a0">pAddress</font><font color="4444FF">;</font> <font color="#2040a0">pAddress</font> <font color="4444FF">=</font> <font color="4444FF">(</font><font color="#2040a0">sockaddr_in</font> <font color="4444FF">*</font><font color="4444FF">)</font> <font color="4444FF">&</font> <font color="4444FF">(</font><font color="#2040a0">InterfaceList</font><font color="4444FF">[</font><font color="#2040a0">i</font><font color="4444FF">]</font>.<font color="#2040a0">iiAddress</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="#2040a0">cout</font> <font color="4444FF"><</font><font color="4444FF"><</font> <font color="#008000">" "</font> <font color="4444FF"><</font><font color="4444FF"><</font> <font color="#2040a0">inet_ntoa</font><font color="4444FF">(</font><font color="#2040a0">pAddress</font><font color="4444FF">-</font><font color="4444FF">></font><font color="#2040a0">sin_addr</font><font color="4444FF">)</font><font color="4444FF">;</font>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -