【问题标题】:Send a ARP packet with C用 C 发送一个 ARP 包
【发布时间】:2014-02-15 21:42:20
【问题描述】:

我想知道如何用C语言发送一个ARP包,从sockets发送的函数send和sendto通过TCP或UDP发送,但是我没有找到如何使用ARP。

【问题讨论】:

    标签: c network-programming packet arp


    【解决方案1】:

    在这种情况下你必须使用原始套接字,或者你可以使用一些库来简化这个,推荐的库是 libpcap,下面我写了一个使用 libpcap 发送数据包的简单示例。

    const int packet_size = 40; // change the value for real size of your packet
    char *packet = (char *) malloc(packet_size)
    pcap_t *handle = NULL;
    char errbuf[PCAP_ERRBUF_SIZE], *device = NULL;
    if ((device = pcap_lookupdev(errbuf)) == NULL) {
      fprintf(stderr, "Error lookup device", device, errbuf);
      exit(1);
    }
    if ((handle = pcap_open_live(device, BUFSIZ, 1, 0, errbuf)) == NULL) {
      fprintf(stderr, "ERRO: %s\n", errbuf);
      exit(1);
    }
    // here you have to write your packet bit by bit at packet
    int result = pcap_inject(handle, packet, packet_size);
    

    在这种情况下,您必须创建所有数据包主体,请查看:http://www.cse.ohio-state.edu/cgi-bin/rfc/rfc1293.html 了解有关 ARP 数据包的信息和http://en.wikipedia.org/wiki/Ethernet_frame 了解有关以太网帧的信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-15
      • 1970-01-01
      • 2011-12-27
      • 1970-01-01
      • 1970-01-01
      • 2014-03-30
      • 1970-01-01
      • 2020-03-03
      相关资源
      最近更新 更多