⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 net_arp.c

📁 TI的2812控制交通灯
💻 C
字号:

void SaveAdd(void)
{
	u8 i;
   for (i=0;i<6;i++)
      MAC_O_Addr[i]=Receive_Buffer[i+6];  //保存外部MAC地址
   for (i=0;i<4;i++)
      IP_O_Addr[i]=Receive_Buffer[i+26];  //保存外部IP地址
}



void IP_ARP(void)     //ARP数据处理
{
   u16 i,Len;
   for (i=0;i<6;i++)
      MAC_O_Addr[i]=Receive_Buffer[i+6];  //保存外部MAC地址
   for (i=0;i<4;i++)
      IP_O_Addr[i]=Receive_Buffer[i+22+6];  //保存外部IP地址

   /*
   printf("外部MAC地址 ");
   for(i=0;i<6;i++)
      printf("%2x ",MAC_O_Addr[i]);
   printf("\n");
   printf("外部ip地址 ");
   for(i=0;i<4;i++)
      printf("%d.",IP_O_Addr[i]);
   printf("\n\n");
   */

   //开始拼接ARP返回包
   HEAD_Ethernet();        //以太网头
   Len=Start_ARP;
   Send_Buffer[Len++]=0x00;               //硬件类型,0x0001 MAC地址
   Send_Buffer[Len++]=0x01;
   Send_Buffer[Len++]=0x08;               //协议类型,0x0800 IP地址
   Send_Buffer[Len++]=0x00;
   Send_Buffer[Len++]=6;                  //硬件地址长度,6  MAC地址占用字节数
   Send_Buffer[Len++]=4;                  //协议地址长度,4  IP地址占用字节数
   Send_Buffer[Len++]=0;                  //OP(操作类型),2  ARP应答
   Send_Buffer[Len++]=2;
   for (i=0;i<6;i++)
      Send_Buffer[Len++]=MAC_Addr[i];  //本地MAC地址
   for (i=0;i<4;i++)
      Send_Buffer[Len++]=IP_Addr[i];  //本地IP地址
   for (i=0;i<6;i++)
      Send_Buffer[Len++]=MAC_O_Addr[i];  //外部MAC地址
   for (i=0;i<4;i++)
      Send_Buffer[Len++]=IP_O_Addr[i];  //外部IP地址
   while(Len<64)
      Send_Buffer[Len++]=0x00;    //小于64字节的部分用0填充

   NET_Send_Packet(Send_Buffer,Len);  //发送数据包
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -