?? main.c
字號:
#include <includes.h>
const static int8 UDPData[]="LwIP UDP客戶端在Luminary微控制器上的測試\r\n";
// 延時
void Delay(unsigned long ulVal)
{
while ( --ulVal != 0 );
}
//這是一個回調(diào)函數(shù),當(dāng)有UDP數(shù)據(jù)收到時會被調(diào)用
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) // 如果收到的數(shù)據(jù)不為空
{
udp_sendto(upcb,p,&destAddr,port); // 將收到的數(shù)據(jù)再發(fā)送出去
pbuf_free(p); // 釋放緩沖區(qū)數(shù)據(jù)
}
}
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); //遠(yuǎn)程主機(jī)地址
UdpPcb = udp_new();
udp_bind(UdpPcb,IP_ADDR_ANY,4000); // 綁定本地IP地址
udp_connect(UdpPcb,&ipaddr,5000); // 連接遠(yuǎn)程主機(jī)
udp_recv(UdpPcb,UDP_Receive,NULL); // 設(shè)置數(shù)據(jù)接收時的回調(diào)函數(shù)
//udp_send(UdpPcb,p);
//而且延時要足夠的,否則收不到
Delay(400000UL); //一定要加延時,否則可能都沒綁定就發(fā)數(shù)據(jù)了,就會收不到
udp_send(UdpPcb,p);
while(1)
{
//udp_send(UdpPcb,p);
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -