65.9K
CodeProject 正在变化。 阅读更多。
Home

检查 IPX 通信并获取节点地址

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.17/5 (3投票s)

1999年12月29日

viewsIcon

58432

downloadIcon

894

如何获取网络站点的 IPX 节点地址

  • 下载演示项目 - 61 Kb
  • Sample Image - IPXCheck.gif

    在一个最近的项目中,该项目使用 IPX 协议在多台 Windows NT 机器和多台 DOS 机器之间进行通信,我需要找到本地计算机的 IPX 节点地址以及网络上所有计算机(运行 Windows 或 DOS)的节点地址。因此,我设计了两个程序(一个 32 位版本用于 Windows,另一个 16 位版本用于 DOS),它们支持相同的自定义数据包类型。最终结果是一个应用程序,它显示网络中运行其中一个程序的每台计算机的节点地址以及每台计算机的本地时间。

    在 DOS 方面,我使用直接中断调用来访问安装在 DOS 机器上的 IPX/SPX 驱动程序。在 Windows 方面,我使用 Winsock 2 API 进行 IPX 通信。设置初始通信有点复杂,但最终代码非常简单。

    其思路如下:每个应用程序都在一个定时器下运行。当定时器到期(1 秒)时,应用程序广播一个包含其本地时间和用户定义名称的数据包。这个广播数据包会被所有机器捕获(包括发送机器),并在列表中显示。如果它已经存在于列表中,则会更新列表项。由于这是一种无连接通信,因此获取发送者 IPX 节点地址的技术对于 DOS 和 Windows 来说是不同的。DOS 代码直接从 IPX 数据包中获取发送者的节点地址。但是,由于 Windows 应用程序使用 Winsock 2,因此无法访问数据包结构。在 Winsock 窗口消息处理程序中,应用程序执行一个 recvfrom() 函数调用,该调用返回发送者的节点地址。

    这 2 个应用程序被证明非常有用,因为可以获取所有节点地址,并且(这非常重要)可以检查机器上是否安装了对 IPX 通信的支持(无论是 Windows 还是 DOS),并检查 IPX 通信是否正常运行(即使一切正常,如果以太网帧类型不相同,机器可能彼此不可见)。因此,这两个应用程序也是很好的诊断工具。

    我计划在同一个应用程序(仅 Windows 版本)上工作,该应用程序支持 TCP/IP 协议(实际上仅 IP,因为它将使用 UDP 协议工作)。您可以在 www.scasoftware.com 上查看最新信息。

     

    © . All rights reserved.