📄 main.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 + -