社区
网络及通讯开发
帖子详情
如何在局域网上编一段程序通过IP知道对方的MAC网卡号?许多软件能显示对方的mac.
BCB
2003-02-11 05:02:34
如果你访问了某一个IP地址,在dos下执行命令 arp -a
马上就显示出对方的网卡号MAC,原来MAC在TCP/IP数据包中就有,
怎样用bcb编出一段程序实现这个功能呢? 200分!!!!!!!!!!
String GetMac(char * ip); // 怎样实现?
...全文
196
18
打赏
收藏
如何在局域网上编一段程序通过IP知道对方的MAC网卡号?许多软件能显示对方的mac.
如果你访问了某一个IP地址,在dos下执行命令 arp -a 马上就显示出对方的网卡号MAC,原来MAC在TCP/IP数据包中就有, 怎样用bcb编出一段程序实现这个功能呢? 200分!!!!!!!!!! String GetMac(char * ip); // 怎样实现?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lontran
2003-02-20
打赏
举报
回复
#include "winsock.h"
#include "nb30.h"
pepsi1980
2003-02-19
打赏
举报
回复
不好意思,上次漏贴了:(VC)
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include "iphlpapi.h"
#pragma comment ( lib, "ws2_32.lib" )
#pragma comment ( lib, "Iphlpapi.lib" )
.......(同上)
BCB
2003-02-18
打赏
举报
回复
少了头文件,编译通不过
RomanticProgrammer
2003-02-17
打赏
举报
回复
学习..呵呵.
BCB
2003-02-17
打赏
举报
回复
等俺试好再发分
lontran
2003-02-14
打赏
举报
回复
strcpy((char *)ncb.ncb_callname, "*" );//这个"*"代表获得本机网卡地址,换成IP地址就可以获得局域网内其他机器的网卡地址。
ncb.ncb_buffer =(unsigned char *) &Adapter;
ncb.ncb_length = sizeof(Adapter);
uRetCode = Netbios(&ncb);
if (uRetCode == 0 )
{
AnsiString (Mac).sprintf("%02X%02X%02X%02X%02X%02X",
Adapter.adapt.adapter_address[0],
Adapter.adapt.adapter_address[1],
Adapter.adapt.adapter_address[2],
Adapter.adapt.adapter_address[3],
Adapter.adapt.adapter_address[4],
Adapter.adapt.adapter_address[5]);
Mac=msg.c_str();
return true;
}
else
{
strcat(Mac,"Unknown.");
return false;
}
}
lontran
2003-02-14
打赏
举报
回复
bool MAC(char *Mac)
{
AnsiString msg;
typedef struct _ASTAT_
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff [30];
}ASTAT, *PASTAT;
ASTAT Adapter;
NCB ncb;
UCHAR uRetCode;
char tmp[40];
Mac[0]='\0';
memset( &ncb, 0, sizeof(ncb) );
ncb.ncb_command = NCBRESET;
ncb.ncb_lana_num = 0;
uRetCode = Netbios( &ncb );
if (uRetCode!=0)
{
strcat(Mac,"Init Error!");
return false;
}
memset(&ncb, 0, sizeof(ncb) );
ncb.ncb_command = NCBASTAT;
ncb.ncb_lana_num = 0;
oishi
2003-02-13
打赏
举报
回复
关注
收藏
wildhorse01
2003-02-13
打赏
举报
回复
http://www.chinabcb.com/dispbbs.asp?boardID=4&ID=756
这是我从老侃的网站得到的,谢谢老侃:)
wildhorse01
2003-02-13
打赏
举报
回复
nowcan.chinabcb.com上好像有吧?
Jim3
2003-02-13
打赏
举报
回复
学习
NowCan
2003-02-12
打赏
举报
回复
楼上的代码需要Win2k+才行。
BCB
2003-02-12
打赏
举报
回复
要简单通用,最好是c++builder的代码
pepsi1980
2003-02-11
打赏
举报
回复
#include
#include
#include
#include "iphlpapi.h"
#pragma comment ( lib, "ws2_32.lib" )
#pragma comment ( lib, "Iphlpapi.lib" )
void main( int argc, char ** argv )
{
int numberOfHost = 1;
struct hostent *remoteHostent;
//处理命令行参数
if ( argc == 3 )
numberOfHost = atoi( argv[2] );
if ( ( argc >3 ) || ( argc < 2 ) )
{
printf( "RmtHost v0.2 - Get remote HostName /MacAddress\n" );
printf( "by ShotgunLabs ( Shotgun@xici.net )\n\n" );
printf( "Usage :\n\tRmtHost.exe [RemoteIP] \n\n" );
printf( "Example:\n\tRmtHost.exe 192.168.0.3\n" );
printf( "\tRmtHost.exe 192.168.0.3 255\n\n" );
exit( 0 );
}
//初始化SOCKET
WSADATA wsaData;
int iRet = WSAStartup(MAKEWORD(2,1), &wsaData);
if ( iRet != 0 )
{
printf( "WSAStartup Error:%d\n", GetLastError() );
exit( 0 );
}
int nRemoteAddr = inet_addr( argv[1] );
remoteHostent= (struct hostent*)malloc( sizeof(struct hostent ));
struct in_addr sa;
for ( int i = 0; i < numberOfHost; i ++ )
{
//获取远程机器名
sa.s_addr = nRemoteAddr;
printf( "\nIpAddress : %s\n", inet_ntoa( sa ) );
remoteHostent = gethostbyaddr( (char*)&nRemoteAddr,4, AF_INET );
if ( remoteHostent )
printf( "HostName : %s\n",remoteHostent->h_name );
else
printf( "gethostbyaddr Error:%d\n",GetLastError() );
//发送ARP查询包获得远程MAC地址
unsigned char macAddress[6];
ULONG macAddLen = 6;
iRet=SendARP(nRemoteAddr, (unsigned long)NULL,(PULONG)&macAddress, &macAddLen);
if ( iRet == NO_ERROR )
{
printf( "MacAddress: " );
for( int i =0; i<6; i++ )
{
printf( "%.2x", macAddress[i] );
if ( i<5 ) printf( "-" );
}
printf( "\n" );
}
else
printf( "SendARP Error:%d\n", GetLastError());
nRemoteAddr = htonl( ntohl( nRemoteAddr ) + 1 );
}
}
NowCan
2003-02-11
打赏
举报
回复
arp只能在同一个网段的局域网中显示出mac
是啊,难道你想得到其他网段的MAC?
NowCan
2003-02-11
打赏
举报
回复
我可以给你一个VC的程序,如果需要,和我联系。
nowcan@163.com
BCB
2003-02-11
打赏
举报
回复
arp只能在同一个网段的局域网中显示出mac
BCB
2003-02-11
打赏
举报
回复
c:\dos > ping 192.168.1.2
c:\dos> arp -a
只要能ping通
马上就就显示出192.168.1.2.的mac
编程如何实现呢?
C语言笔记01(7.15-7.18)
C语言基本知识点思维导图
【智能汽车竞赛】摄像头组-长春理工大学-天狼五
号
技术赛方案.docx
【智能汽车竞赛】摄像头组-长春理工大学-天狼五
号
技术赛方案.docx
MATLAB中计算可达矩阵的实现方法
资源下载链接为: https://pan.quark.cn/s/abbae039bf2a 请用MATLAB编程实现从邻接矩阵计算可达矩阵。
hadoop-mapreduce-client-jobclient-2.7.3.jar中文文档.z
ip
1、压缩文件中包含: 中文文档、jar包下载地址、Maven依赖、Gradle依赖、源代码下载地址。 2、使用方法: 解压最外层z
ip
,再解压其中的z
ip
包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 3、特殊说明: (1)本文档为人性化翻译,精心制作,请放心使用; (2)只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; (3)不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 4、温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件。 5、本文件关键字: jar中文文档.z
ip
,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册。
jetty-server-9.4.44.v20210927.jar中文文档.z
ip
1、压缩文件中包含: 中文文档、jar包下载地址、Maven依赖、Gradle依赖、源代码下载地址。 2、使用方法: 解压最外层z
ip
,再解压其中的z
ip
包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 3、特殊说明: (1)本文档为人性化翻译,精心制作,请放心使用; (2)只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; (3)不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 4、温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件。 5、本文件关键字: jar中文文档.z
ip
,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册。
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章