⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getmac-netbios.html

📁 SDK FAQ集
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><html lang="en"><head><title>Winsock Programmer's FAQ: Get MAC Address, NetBIOS Method</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/getifaces.html">&lt;&lt;</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 Ethernet MAC Address, NetBIOS Method				</b></p>			</font>			</td>		<td align="right" bgcolor="#e0e0c0">			<font size="2" face=Verdana,Arial,Helvetica>				<b><a href="../examples/getmac-rpc.html">&gt;&gt;</a></b>			</font>		</td>	</tr></table><!--  ---- Body Table ----  --><table width="95%" border="0" cellpadding="10">	<tr valign="top">		<td><p>This example shows you how to use the NetBIOS API to retrieve the MACaddresses of the network adapters in a system. There are two weaknessesto this approach. The first is that you have to have NetBIOS installed,which implies Windows file/print sharing. The second is that if you havemore than one network adapter, you may have to do extra work to figureout which address you really want. If these weaknesses are a problem,you might look at the <a href="getmac-rpc.html">RPC variation</a> forgetting the MAC address.</p><p>This code is based on that presented in Microsoft Knowledge Basearticle <a href="http://support.microsoft.com/support/kb/articles/q118/6/23.asp">Q118623</a>. Of course, my code is cleaner and smarterthan theirs is. B-)</p><hr noshade size=1 color=#404040><h4 class=lmargin><a href="../examples/src/getmac-netbios.cpp">getmac-netbios.cpp</a></h4><pre><font color="#444444">// Visual C++ 5.0: cl -GX getmac-netbios.cpp netapi32.lib</font><font color="#444444">// Borland C++ 5.0: bcc32 getmac-netbios.cpp</font><font color="0000ff"><strong>#include <font color="#008000">&lt;windows.h&gt;</font></strong></font><font color="0000ff"><strong>#include <font color="#008000">&lt;stdlib.h&gt;</font></strong></font><font color="0000ff"><strong>#include <font color="#008000">&lt;stdio.h&gt;</font></strong></font><font color="0000ff"><strong>#include <font color="#008000">&lt;iostream&gt;</font></strong></font><font color="0000ff"><strong>#include <font color="#008000">&lt;strstream&gt;</font></strong></font><font color="0000ff"><strong>#include <font color="#008000">&lt;string&gt;</font></strong></font><strong>using</strong> <strong>namespace</strong> <font color="#2040a0">std</font><font color="4444FF">;</font><strong>bool</strong> <font color="#2040a0">GetAdapterInfo</font><font color="4444FF">(</font><strong>int</strong> <font color="#2040a0">nAdapterNum</font>, <font color="#2040a0">string</font> <font color="4444FF">&amp;</font> <font color="#2040a0">sMAC</font><font color="4444FF">)</font><font color="4444FF"><strong>{</strong></font>    <font color="#444444">// Reset the LAN adapter so that we can begin querying it </font>    <font color="#2040a0">NCB</font> <font color="#2040a0">Ncb</font><font color="4444FF">;</font>    <font color="#2040a0">memset</font><font color="4444FF">(</font><font color="4444FF">&amp;</font><font color="#2040a0">Ncb</font>, <font color="#FF0000">0</font>, <strong>sizeof</strong><font color="4444FF">(</font><font color="#2040a0">Ncb</font><font color="4444FF">)</font><font color="4444FF">)</font><font color="4444FF">;</font>    <font color="#2040a0">Ncb</font>.<font color="#2040a0">ncb_command</font> <font color="4444FF">=</font> <font color="#2040a0">NCBRESET</font><font color="4444FF">;</font>    <font color="#2040a0">Ncb</font>.<font color="#2040a0">ncb_lana_num</font> <font color="4444FF">=</font> <font color="#2040a0">nAdapterNum</font><font color="4444FF">;</font>    <strong>if</strong> <font color="4444FF">(</font><font color="#2040a0">Netbios</font><font color="4444FF">(</font><font color="4444FF">&amp;</font><font color="#2040a0">Ncb</font><font color="4444FF">)</font> <font color="4444FF">!</font><font color="4444FF">=</font> <font color="#2040a0">NRC_GOODRET</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font>        <strong>char</strong> <font color="#2040a0">acTemp</font><font color="4444FF">[</font><font color="#FF0000">80</font><font color="4444FF">]</font><font color="4444FF">;</font>        <font color="#2040a0">ostrstream</font> <font color="#2040a0">outs</font><font color="4444FF">(</font><font color="#2040a0">acTemp</font>, <strong>sizeof</strong><font color="4444FF">(</font><font color="#2040a0">acTemp</font><font color="4444FF">)</font><font color="4444FF">)</font><font color="4444FF">;</font>        <font color="#2040a0">outs</font> <font color="4444FF">&lt;</font><font color="4444FF">&lt;</font> <font color="#008000">&quot;error &quot;</font> <font color="4444FF">&lt;</font><font color="4444FF">&lt;</font> <font color="#2040a0">Ncb</font>.<font color="#2040a0">ncb_retcode</font> <font color="4444FF">&lt;</font><font color="4444FF">&lt;</font> <font color="#008000">&quot; on reset&quot;</font> <font color="4444FF">&lt;</font><font color="4444FF">&lt;</font> <font color="#2040a0">ends</font><font color="4444FF">;</font>        <font color="#2040a0">sMAC</font> <font color="4444FF">=</font> <font color="#2040a0">acTemp</font><font color="4444FF">;</font>        <strong>return</strong> <strong>false</strong><font color="4444FF">;</font>    <font color="4444FF"><strong>}</strong></font>        <font color="#444444">// Prepare to get the adapter status block </font>    <font color="#2040a0">memset</font><font color="4444FF">(</font><font color="4444FF">&amp;</font><font color="#2040a0">Ncb</font>, <font color="#FF0000">0</font>, <strong>sizeof</strong><font color="4444FF">(</font><font color="#2040a0">Ncb</font><font color="4444FF">)</font><font color="4444FF">)</font><font color="4444FF">;</font>    <font color="#2040a0">Ncb</font>.<font color="#2040a0">ncb_command</font> <font color="4444FF">=</font> <font color="#2040a0">NCBASTAT</font><font color="4444FF">;</font>    <font color="#2040a0">Ncb</font>.<font color="#2040a0">ncb_lana_num</font> <font color="4444FF">=</font> <font color="#2040a0">nAdapterNum</font><font color="4444FF">;</font>    <font color="#2040a0">strcpy</font><font color="4444FF">(</font><font color="4444FF">(</font><strong>char</strong> <font color="4444FF">*</font><font color="4444FF">)</font> <font color="#2040a0">Ncb</font>.<font color="#2040a0">ncb_callname</font>, <font color="#008000">&quot;*&quot;</font><font color="4444FF">)</font><font color="4444FF">;</font>    <strong>struct</strong> <font color="#2040a0">ASTAT</font> <font color="4444FF"><strong>{</strong></font>        <font color="#2040a0">ADAPTER_STATUS</font> <font color="#2040a0">adapt</font><font color="4444FF">;</font>        <font color="#2040a0">NAME_BUFFER</font> <font color="#2040a0">NameBuff</font><font color="4444FF">[</font><font color="#FF0000">30</font><font color="4444FF">]</font><font color="4444FF">;</font>    <font color="4444FF"><strong>}</strong></font> <font color="#2040a0">Adapter</font><font color="4444FF">;</font>    <font color="#2040a0">memset</font><font color="4444FF">(</font><font color="4444FF">&amp;</font><font color="#2040a0">Adapter</font>, <font color="#FF0000">0</font>, <strong>sizeof</strong><font color="4444FF">(</font><font color="#2040a0">Adapter</font><font color="4444FF">)</font><font color="4444FF">)</font><font color="4444FF">;</font>    <font color="#2040a0">Ncb</font>.<font color="#2040a0">ncb_buffer</font> <font color="4444FF">=</font> <font color="4444FF">(</font><strong>unsigned</strong> <strong>char</strong> <font color="4444FF">*</font><font color="4444FF">)</font><font color="4444FF">&amp;</font><font color="#2040a0">Adapter</font><font color="4444FF">;</font>    <font color="#2040a0">Ncb</font>.<font color="#2040a0">ncb_length</font> <font color="4444FF">=</font> <strong>sizeof</strong><font color="4444FF">(</font><font color="#2040a0">Adapter</font><font color="4444FF">)</font><font color="4444FF">;</font>        <font color="#444444">// Get the adapter's info and, if this works, return it in standard,</font>    <font color="#444444">// colon-delimited form.</font>    <strong>if</strong> <font color="4444FF">(</font><font color="#2040a0">Netbios</font><font color="4444FF">(</font><font color="4444FF">&amp;</font><font color="#2040a0">Ncb</font><font color="4444FF">)</font> <font color="4444FF">=</font><font color="4444FF">=</font> <font color="#FF0000">0</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -