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

📄 main.c

📁 lm3s下lwip的udp
💻 C
字号:

#include <includes.h>

const static int8 UDPData[]="LwIP UDP客户端在Luminary微控制器上的测试\r\n";

//  延时
void  Delay(unsigned long  ulVal)
{
    while ( --ulVal  !=  0 );
}

//这是一个回调函数,当有UDP数据收到时会被调用
void UDP_Receive(void *arg, struct udp_pcb *upcb, struct pbuf *p,
                 struct ip_addr *addr, u16_t port)
{
  struct ip_addr destAddr = *addr;
  if(p != NULL)                          // 如果收到的数据不为空               
  {
    udp_sendto(upcb,p,&destAddr,port);                    // 将收到的数据再发送出去             
    pbuf_free(p);                                         // 释放缓冲区数据
  }
}


int main()
{
  struct udp_pcb *UdpPcb;
  struct ip_addr ipaddr;
  struct pbuf *p;

  targetInit();
  InitNic();
   
  p = pbuf_alloc(PBUF_RAW,sizeof(UDPData),PBUF_RAM);
  
  p->payload=(void *)UDPData;
  
  IP4_ADDR(&ipaddr,192,168,5,107);      //远程主机地址
  
  UdpPcb = udp_new();
  
  udp_bind(UdpPcb,IP_ADDR_ANY,4000);   // 绑定本地IP地址
  
  udp_connect(UdpPcb,&ipaddr,5000);    // 连接远程主机 
 
  udp_recv(UdpPcb,UDP_Receive,NULL);   // 设置数据接收时的回调函数
  //udp_send(UdpPcb,p);
	                       //而且延时要足够的,否则收不到
  Delay(400000UL);	   //一定要加延时,否则可能都没绑定就发数据了,就会收不到
  udp_send(UdpPcb,p);

  while(1)
  { 
  	//udp_send(UdpPcb,p);
    
  }
}

⌨️ 快捷键说明

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