您的位置:首页 > 产品设计 > UI/UE

Uip在STM32平台移植之建立UDP链接

2015-12-15 10:33 633 查看
在STM32上通过建立UDP连接实现数据的传输。在上节提到采用的是轻型的TCP/IP协议栈Uip,在Uip协议中实现UDP连接的创建,需要以下步骤:

第一步,打开支持UDP协议的配置项,支持的UDP连接的个数,参考上节的配置文件。

第二步,确定本地的IP地址和端口号(192.168.0.100 9999),远程主机的IP地址和端口号(192.168.0.22 9998)

#define IP_ADDR1 192

#define IP_ADDR2 168

/#define IP_ADDR3 3

/#define IP_ADDR4 100

#define UDP_REMOTE_PORT 9998

#define UDP_LOCAL_PORT 9999

第三步,UDP创建连接初始化,

void Udp_Init(void)

{

uint8_t i = 0;

uip_ipaddr_t ipaddr;

for(i = 0; i< UIP_UDP_CONNS; i++)

{

if(&uip_udp_conns[i] != NULL)

{

uip_udp_remove(&uip_udp_conns[i]);

}

}

//创建UDP连接

uip_ipaddr(ipaddr,192, 168, 0, 22);

uip_udp_conn = uip_udp_new(&ipaddr, HTONS(UDP_REMOTE_PORT));

//绑定本地端口

if(uip_udp_conn != NULL)

{

uip_udp_bind(uip_udp_conn, HTONS(UDP_LOCAL_PORT));

}

}

将此UDP初始化函数,放在uip协议栈初始化之后。

UDP应用层数据处理函数的实现

#ifndef UIP_UDP_APPCALL

#define UIP_UDP_APPCALL Udp_Appcall

#endif

void Udp_Appcall(void)

{

uint32_t i ;

u8 strloadlen = 0;

uip_ipaddr_t ipaddr;

u8 targetIp[4], netMask[4], gateway[4], macaddr[6],netip[4];

char
netMaskbuff[16], macaddrbuff[20],gatewayBuf[16];

memset(str,0,100);

udpip_buf = (struct uip_udpip_hdr *)&uip_buf[UIP_LLH_LEN];

udp_datelen = (udpip_buf->len[0] << 8) + udpip_buf->len[1] - UIP_IPUDPH_LEN;//HTONS(udpip_buf->len);

udp_appbuf = (char *)uip_appdata;

memcyp(str,udp_appbuf,udp_datelen);

myudp_send(str,strlen(str));

}

根据需要,实现对数据的处理,编译完成后,下载值目标板,复位。

第四步,将所使用的PC机的IP地址设置成192.168.0.22,打开网络调试助手,将协议类型设置为UDP,本地端口号设置成 UDP_REMOTE_PORT,点击连接,即可创建UDP连接,此时即可通过在网络助手,向目标板发送UDP数据包。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: