【问题标题】:Communicate between two systems using only MAC address仅使用 MAC 地址在两个系统之间进行通信
【发布时间】:2011-07-13 22:03:12
【问题描述】:

我想知道如何使用 C 程序(不使用 IP 地址)仅使用 MAC 地址在两个系统之间进行通信。我认为这是原始的以太网通信。我的要求是仅使用 MAC 地址将数据从客户端发送到服务器。可能这可以通过创建我们自己的原始以太网框架来完成。

请帮助我解决这个问题。如果有人用 C 写过代码,请分享。

此链接可能对您有所帮助,http://aschauf.landshut.org/fh/linux/udp_vs_raw/ch01s03.html

【问题讨论】:

  • 什么操作系统?可以建立链接本地IP地址吗?
  • 您还必须确保客户端和服务器位于同一子网中(即两者之间没有路由器)。如果他们在同一个集线器上,你应该没问题。
  • 我正在使用 Linux 系统 (Ubuntu)。是的,我可以使用 IP 地址在两个系统之间进行通信,并且两者都在同一个网络中。至少我应该能够在系统内进行通信,我的意思是通过在一个终端中运行客户端程序和在另一个终端中运行服务器程序,我应该在服务器端接收数据。此链接可能对您有所帮助,aschauf.landshut.org/fh/linux/udp_vs_raw/ch01s03.html

标签: c networking network-programming networkstream


【解决方案1】:

libpcap 库允许您组装原始以太网数据包并将它们直接发送到适配器:最难的部分是发现正确的适配器。这是为大多数平台(Win PCAP 等)上的 C/C++ 使用而设计的。

请确保这是您想要的:我已经看到了几个使用原始以太网数据包接口的项目,只是为了使用越来越多的协议进行重新传输和窗口化等,直到您最终得到您自己的 TCP/IP 版本(只有一个尚未被数百万人使用 Windows/Linux 或任何您的平台测试过的版本)。如今,大多数以太网芯片也具有加速 TCP/IP 堆栈的功能:因此您也会错过这一点。

【讨论】:

  • 如果所有其他方法都失败并且您确实需要这个,您可以只使用它来交换更有用的标识符(IP 地址或主机名)。
【解决方案2】:

Here 是 C# 的示例,也许您可​​以利用它。正确的代码取决于操作系统,甚至取决于为微控制器编程时使用的芯片。

【讨论】:

    猜你喜欢
    • 2014-03-27
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多