LWIP的UDP相关API

1、udp_new()

 

该函数用于建立一个用于UDP通信的UDP控制块(pcb),但是这个pcb并没有被激活,除非该pcb已经被绑定到一个本地地址上或者连接到一个固定地址的远程主机。在定义一个udp_pcb控制块后该函数应该首先被调用,以建立该控制块的连接标志
功能
建立一个用于UDP通信的UDP控制块(pcb)
原型
struct udp_pcb *udp_new(void)
参数
返回
udp_pcb:建立的UDP连接的控制块(pcb)

2、udp_remove()

该函数用于删除一个指定的连接,通常是控制块在建立成功后,即在函数udp_new()调用之后,当不需要该网络连接来通信了,就需要将其删除,以释放该连接(pcb)所占用的资源。
功能
删除并释放掉一个udp_pcb
原型
void udp_remove(struct udp_pcb *pcb)
参数
pcb:指定要删除的连接(pcb)
返回

3、udp_bind()

该函数用户绑定本地的IP地址和端口号,用户可以将其绑定在一个任意的本地IP地址上,它也只能在函数udp_new()调用之后才能调用
功能
为指定的连接绑定本地IP地址和端口号
原型
err_t udp_bind(struct udp_pcb *pcb,
struct ip_addr *ipaddr,
u16_t port)
参数
pcb: 指定一个连接(pcb)
ipaddr:绑定的本地IP地址。如果为IP_ADDR_ANY,则将连接绑定到所有的本地IP地址上
port: 绑定的本地端口号。注意:千万不要和其它的应用程序产生冲突
返回
ERR_OK: 正确地绑定了指定的连接
ERR_USE: 指定的端口号已经绑定了一个连接,产生了冲突

4、udp_connect()

该函数将一个指定的连接(pcb)连接到远程主机。由于UDP通信是面向无连接的,所以这不会参数任何的网络流量(网络数据收发),它仅仅是设置了一个远程连接的IP地址和端口号。
功能
将参数“pcb”指定的连接控制块连接到远程主机
原型
err_t udp_connect(struct udp_pcb *pcb,
struct ip_addr *ipaddr,
u16_t port)
参数
pcb: 指定一个连接(pcb)
ipaddr:设置连接的远程主机IP地址
port: 设置连接的远程主机端口号
返回
ERR_OK:正确连接到远程主机
其它值: LwIP的一些错误代码标志,表示连接没有正确建立

5、udp_disconnect()

该函数关闭参数“pcb”指定的连接,同函数udp_connect()作用相反。由于UDP通信是面向无连接的,所以这个函数同样不会参数任何的网络流量((网络数据收发),它仅仅是删除了远程连接的地址
功能
关闭参数“pcb”指定的连接, 同函数udp_connect()作用相反
原型
void udp_disconnect(struct udp_pcb *pcb)
参数
pcb:指定要删除的连接(pcb)
返回

6、udp_send()

该函数使用UDP协议发送pbuf p指向的数据。在需要发送数据时调用,发送后,该pbuf结构并没有被释放。调用该函数后,数据包将被发送到存放在pcb中的当前指定的IP地址和端口号上。如果该pcb没有连接到一个固定的端口号,那么该函数将会自动随机地分配一个端口号,并将数据包发送出去。通常,在调用前都会先调用函数udp_connect()
功能
使用UDP协议发送pbuf p指向的数据
原型
err_t udp_send(struct udp_pcb *pcb, struct pbuf *p)
参数
pcb:指定发送数据的连接(pcb)
p: 包含需要发送数据的pbuf链
返回
ERR_OK:数据包成功发送,没有任何错误发生
ERR_MEM:内存不可用
ERR_RTE:不能找到到达远程主机的路由
其它值:其它的一些错误码,都表示发送了错误

7、udp_sendto()

该函数同udp_send()作用一样,但是它指定了发送的目的主机IP地址和端口号,相当于udp_connect()和函数udp_send()合在一起使用的效果。但是,如果在调用该函数前已经调用过函数udp_connect(),那么发送目的主机的IP地址和端口号将以本函数指定的为准,由函数udp_connect()指定的将会被刷新
功能
向具有指定的IP地址和端口号远程主机发送UDP数据
原型
err_t udp_sendto(struct udp_pcb *pcb,
struct pbuf *p,
struct ip_addr *dst_ip,
u16_t dst_port)
参数
pcb: 指定发送数据的连接(pcb)
p: 包含需要发送数据的pbuf链
dst_ip:发送数据的远程主机IP地址
dst_port:发送数据的远程主机端口号
返回
同函数udp_send()的返回值一样

8、udp_recv()

该函数用于指定当有新的UDP数据接收到时被调用的回调函数,回调函数将的参数将传递进远程主机的IP地址、端口号及接收到的数据等信息
功能
指定一个接收到UDP数据包时被调用的回调函数
原型
void udp_recv(struct udp_pcb *pcb,
void (* recv)(void *arg,
struct udp_pcb *upcb,
struct pbuf *p,
struct ip_addr *addr,
u16_t port),
void *recv_arg)
参数
pcb: 指定一个连接(pcb)
recv: 指定数据包接收到时的回调函数
recv_arg:传递给回调函数的参数
返回

点击查看本文所在的专辑,STM32F207网络开发

关注公众号,第一时间收到文章更新

  • 3
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: lwip是一个轻量级的TCP/IP协议栈,非常适合嵌入式系统。在lwip中,UDP是一种基于无连接的协议,它通过IP地址和端口号进行通信。lwip提供了许多UDP例子来帮助开发人员更好地理解和使用UDP协议。 lwip UDP的示例代码可以在lwip的官方网站上找到。在这些示例中,主要有以下几个方面的内容: 1. 创建UDP服务端:该示例演示如何创建一个UDP服务端,等待客户端发送数据。服务端通过绑定IP地址和端口号来监听UDP数据报。 2. 创建UDP客户端:该示例演示如何创建一个UDP客户端,向服务端发送数据。客户端通过指定服务器的IP地址和端口号来发送UDP数据报。 3. UDP回调函数示例:该示例演示如何使用UDP回调函数处理接收到的UDP数据报。 4. UDP广播示例:该示例演示如何实现UDP广播,将数据发送给局域网中的所有主机。 在使用lwip UDP示例时,需要注意的是,UDP是一种不可靠的协议,所以在数据传输时需要考虑数据的可靠性和完整性。同时,在实际应用中,还需要根据具体需求进行必要的修改和优化。 ### 回答2: lwip是一个轻量级的IP协议栈,提供了TCP、UDP和IP等网络协议协议的支持。lwipUDP例子是基于lwipUDP协议的例子,可以很好地演示lwip实现UDP通信的过程。 lwip实现UDP通信的过程如下: 1. 创建一个UDP协议对象:首先需要通过调用lwipAPI(Application Programming Interface)来创建一个UDP协议对象,该对象用于接收和发送UDP数据包。 2. 设置UDP协议对象的参数:在创建UDP对象之后,需要设置UDP协议对象的本地IP地址和端口号等参数,以便实现UDP数据包的接收和发送。 3. 接收UDP数据包:创建UDP对象并设置相关参数后,可以通过API来接收UDP数据包。当有UDP数据包到达时,lwip将其转发给应用程序,应用程序通过API获得UDP数据包的消息内容。 4. 发送UDP数据包:通过API调用来发送UDP数据包,将UDP消息内容和目标IP地址和端口号作为参数传入API中,lwip将此数据包发送到指定的目标地址。 通过以上步骤,就能够很好地实现lwipUDP通信功能,并实现数据交互。在lwipUDP例子中,可以演示如何实现UDP通信功能,具体内容可以参考相关文档和API资料。 ### 回答3: lwip udp example是使用lwip网络协议栈开发UDP协议的示例代码。lwip是一个轻量级的网络协议栈,可以在嵌入式系统中使用,用于实现TCP/IP协议栈。该示例代码可以帮助开发者快速了解如何使用lwip协议栈开发UDP应用程序,并在实际项目中应用。 开发者可以通过lwip udp example学习如何使用lwip协议栈实现UDP通信。示例代码提供了UDP服务器和UDP客户端两种实现方式。开发者可以根据自己的需求选择对应的示例代码,快速构建UDP通信应用程序。示例代码提供了详细的注释,方便开发者理解代码的实现细节。 除了UDP通信示例,lwip还提供了TCP通信示例、DHCP客户端示例、SNMP示例等。开发者可以通过这些示例了解lwip协议栈的各种功能特性,并结合实际项目需求进行定制开发。 总之,lwip udp example是lwip协议栈在UDP应用方面的一个经典示例,可以帮助开发者快速掌握lwip的使用方法,并实际应用于嵌入式项目中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

strongercjd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值