急急急!!!求救!!!一个关于IPX/SPX的问题

Rmirp 2000-09-04 03:19:00
在DOS下如何返回NetWare4.11服务器的MAC地址
...全文
699 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
nationphone 2001-02-06
  • 打赏
  • 举报
回复
如果你的网卡是装在工作站上,利用NETWARE NCP服务可以先获取本机与服务器的连接号,再利用
NCP服务取得网卡地址,不过对服务器我就不大清楚了。
获取本机连接号:int 21h ,ah=e3h,type=0ah;
获取网络地址:int 21h ,ah=e3h,type=13h;
这是参考的谭浩强主编的《网络实用编程技术》,不过这本书附带软盘的程序录入错误一大堆,
相信根本没经过调试,很难用。

Rmirp 2000-09-28
  • 打赏
  • 举报
回复
papachong,见到你的回贴,使我看到一点希望,
我要的MAC地址是物理的文件服务器的网卡地址,
而不是在NCF文件中加上NODE=XXXXXXXXXXX;
我要得到文件服务器的网卡地址,是用于加密,
所以我必须得到物理的网卡地址,
你提到的Client 32 for DOS,在CLIENT端是不是
只运行VLM就可以,另外你有没有Client 32 for DOS的
开发包,或者LIB+H+README

关于你说的不能用IPX帧来分析服务器的真实的MAC地址,我用NetxRay已经
证实了你的话是对的.对于分析IEEE 802.3协议帧或者IEEE 802.2协议帧我
没有那方面的经验,不知你有没有IEEE 802.2协议帧这方面的资料(如果有
示例的源程序就最好了.^-^).

papachong 2000-09-25
  • 打赏
  • 举报
回复
另外我需要你明确的是:
你要NOVELL服务器的MAC地址是指什么MAC地址?
因为NOVELL服务器一般通讯时都用的是虚拟MAC地址,
即网段号加上0000000000X之类的地址;
另外一个就是服务器网卡的地址(例如0050BAXXXXXX)之类的;
在NOVELL环境通讯时只需要第一种类型的地址;
不知你是否了解802.3格式的帧协议?如下所示
|dst net|dst addr|src net|src addr|LLC|IPX-header|
IPX/SPX是基于802.3帧协议之上的协议。
与服务器通讯时,在IPX-header之中有一个dst addr,但这是IPX
协议之上的,服务器是使用NetAddr+NodeAddr组成的,
而在基于IEEE 802.3帧协议之中的dst addr却是Novell网卡的真实地址。

所以,你用获得IPX帧来分析服务器的MAC地址是不可能得到的.除非你去分析IEEE 802.3协议帧
papachong 2000-09-25
  • 打赏
  • 举报
回复
建议你使用Client 32 for DOS,之中相信可以找到你要的东东。
这还是早先的INT 7A功能调用。不过你可以使用以下功能:
GetLANDriverConfigInfo
功能:取文件服务器的网络驱动器的配置信息;
说明:使用DOS中断E3H第E3H号功能;
输入:DS:SI指向requestBuf
0 requestBuf Len -2 int
2 E3H char
3 网卡号(0-3) char
ES:DI返回缓冲区:
replybuf最大长度为174个字节
0 replyBuf长度-2 int
2 网络地址(Network Address) char[4]
6 主机地址(Host Address) char[6]
12 网络驱动器安装 char
之后就是一些你不需要的信息了。

另外问一个问题:
你要服务器的MAC地址干什么呢?
再用一个笨一点(但很实用)的办法就是在配置文件之中指定服务器的MAC地址。
再者你向服务器发送IPX包不需要服务器的MAC地址,而只需要虚拟地址:
如你的网络号是000666,则服务器地址可用000666:000000000001。
oldworm 2000-09-22
  • 打赏
  • 举报
回复
怒了,我就不信解决不了你的这个问题,不过说实话,如果你四年前问我我立刻给你写程序出来。
Rmirp 2000-09-22
  • 打赏
  • 举报
回复
有谁能救我
adams 2000-09-22
  • 打赏
  • 举报
回复
你要是着急,就去www.experts-exchange.com去问吧,一般很快就有答复。
aoao 2000-09-22
  • 打赏
  • 举报
回复
如果模拟ncp协议发一个寻找server的广播的话,
不是server的不会响应你的广播的
aoao 2000-09-22
  • 打赏
  • 举报
回复
去找一个helppc2.0,里面有所有dos 中断调用说明包括ipx/spx.
似乎在ips/spx调用服务中有获取服务器的mac地址的调用,
再不行,就找嗅探器捕获server与client的通讯并分析,模拟一个client普通的
操作,获取返回包即可得到server地址
Rmirp 2000-09-19
  • 打赏
  • 举报
回复
我没有这方面的资料,有没有源程序,或者这方面的LIB
谢谢你的支持
jeff_z 2000-09-19
  • 打赏
  • 举报
回复
to rmirp:
如果你考虑我所说的方法,EMAIL TO :jeff_c@371.net
Rmirp 2000-09-19
  • 打赏
  • 举报
回复
我曾在adams提拱的地址上,下了NetWare的c的LIB3.0,LIB3.5,但是经过非常仔细的考虑,发现没有
这样的功能,除了能返回本机网卡的MAC之外,其它一无所用,当然它有很多的功能,不过不
我所要的。但是不知道有没有4.0,或更高的VER。
oldworm 2000-09-19
  • 打赏
  • 举报
回复
我除了这里提供的一个招来的东西之外还有自己写的for dos的东西,另外还有一个dos下用的Lib+h+help,不过都在光盘上。
Rmirp 2000-09-19
  • 打赏
  • 举报
回复
oldworm,你跟jeff_z一样是根据Netbios命令解决问题的,但NETBIOS我只有WINDOWS自带NETAPI
并且在VC++6.0环境中,编过一个程式,在dos16位环境,我没有LIB+H,与它的详细一点的说明
oldworm 2000-09-19
  • 打赏
  • 举报
回复
我在大学里的时候写过一些Novell下的应用程序,都是c里面套中断,后来找到一个c的Lib+h可以实现很多的novell功能调用(比我原来写的要多),如果你一定非常需要的话我可以去找找,应该在光盘上,我记得我后来将我在学校里写的程序全部刻到光盘上去了,虽然没有什么用,以作纪念吧。
至于什么是Mac地址,应该有的,另外我在Windows下好像也有过类似的东西,代码如下:
sorry,找不着了。终于找到了。
void getmac_one (int lana_num , CString &mdcAddress)
{
NCB ncb;
UCHAR uRetCode;

memset( &ncb, 0, sizeof(ncb) );
ncb.ncb_command = NCBRESET;
ncb.ncb_lana_num = lana_num;
// 指 定 网 卡 号 首 先 对 选 定 的 网 卡 发 送 一 个
// NCBRESET 命 令, 以 便 进 行 初 始 化
uRetCode = Netbios( &ncb );
// printf( "The NCBRESET return code is: 0x %x \n", uRetCode );

memset( &ncb, 0, sizeof(ncb) );
ncb.ncb_command = NCBASTAT;
ncb.ncb_lana_num = lana_num; // 指 定 网 卡 号

strcpy((char *)ncb.ncb_callname,"* " );
ncb.ncb_buffer = (unsigned char *) &Adapter;
// 指 定 返 回 的 信 息 存 放 的 变 量
ncb.ncb_length = sizeof(Adapter);

// 接 着, 可 以 发 送NCBASTAT 命 令 以 获 取 网 卡 的 信 息
uRetCode = Netbios( &ncb );
printf( "The NCBASTAT return code is:0x %x \n", uRetCode );
if ( uRetCode == 0 )
{
// 把 网 卡MAC 地 址 格 式 化 成 常 用 的16 进 制 形 式, 如0010 -A4E4 -5802
// printf( "The Ethernet Number[ %d] is: %02X %02X - %02X %02X - %02X %02X\n",
mdcAddress.Format("网卡[%d]地址是:%02X%02X-%02X%02X-%02X%02X",
lana_num,
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] );
}
}



jeff_z 2000-09-18
  • 打赏
  • 举报
回复
有一种办法可以在DOS环境下,取得SERVER的MAC地址,
不过不需要IPX/SPX,是从CLIENT(DOS)上装载NETBIOS
模块,然后使用NETBIOS调用就行了。
如果只要取MAC地址,这样做比较简单,希望对你有用。
Rmirp 2000-09-06
  • 打赏
  • 举报
回复
我向世界呼救,有没有有关的源程序!!!!!!!!!!!!!!!!!!!!!!!!
homesoft 2000-09-06
  • 打赏
  • 举报
回复
你是最惨的一个。只有一个人回应你。
我曾在dos下变过一个ipx/spx程序,时间太长了,忘了什么是mac地址了。不过有源码。
adams 2000-09-06
  • 打赏
  • 举报
回复
这个网站有一些NOVELL程序的例子,还有个dos下的c函数包netclb.zip和一个vcl组件,你可以试试。
http://www.pandoratools.de/1298/0bp.htm
Rmirp 2000-09-05
  • 打赏
  • 举报
回复
这是C++封装的IPX协议,请高手帮忙
加载更多回复(13)

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧