2 Star 4 Fork 4

精易科技/eapi

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
eapi_45_GetRemoteMac.cpp 1.37 KB
一键复制 编辑 原始数据 按行查看 历史
AlongsCode 提交于 2023-02-09 00:42 +08:00 . 部分重构
#include "..\include_eapi_header.h"
#include <sstream>
#include <iomanip>
#include <iphlpapi.h>
#pragma comment(lib,"Ws2_32.lib")
//试试流能静编吗
inline char* GetRemoteMac(const char* ip)
{
ULONG PhyAddrLen = 6;
WSAData wsaData;
ULONG pMacAddr[2] = { 0 };
std::ostringstream oss;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) == 0)
{
IPAddr addr = inet_addr(ip);
if (gethostbyaddr((const char*)&addr, sizeof(addr), AF_INET) != 0 &&
SendARP(addr, 0, &pMacAddr, &PhyAddrLen) == 0)
{
BYTE* bPhysAddr = (BYTE*)&pMacAddr;
oss << std::hex << std::setfill('0') << std::setw(2) << (int)bPhysAddr[0] << '-'
<< std::hex << std::setfill('0') << std::setw(2) << (int)bPhysAddr[1] << '-'
<< std::hex << std::setfill('0') << std::setw(2) << (int)bPhysAddr[2] << '-'
<< std::hex << std::setfill('0') << std::setw(2) << (int)bPhysAddr[3] << '-'
<< std::hex << std::setfill('0') << std::setw(2) << (int)bPhysAddr[4] << '-'
<< std::hex << std::setfill('0') << std::setw(2) << (int)bPhysAddr[5];
}
WSACleanup();
}
return CloneTextData(oss.str().c_str());
}
// 调用格式: SDT_TEXT 取远程网卡物理地址, 命令说明: "根据指定的IP地址取远程机器网卡的物理地址。。失败返回空。"
// 参数<1>: IP地址 SDT_TEXT, 参数说明: NULL
EAPI_EXTERN_C void eapi_GetRemoteMac_45_eapi(PMDATA_INF pRetData, INT nArgCount, PMDATA_INF pArgInf)
{
pRetData->m_pText = GetRemoteMac(pArgInf->m_pText);
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/JYtechnology/eapi.git
git@gitee.com:JYtechnology/eapi.git
JYtechnology
eapi
eapi
master

搜索帮助