LWIP中基于UDP SOCKET组播功能的实现
来源:互联网 发布:三国杀diy软件 编辑:程序博客网 时间:2024/06/06 04:50
/*******************************************************File name: MulticastUtility.cDescription: 组播功能的实现Author: 陈龙JasonVersion: v1.0********************************************************/#include "MulticastUtility.h"#include "igmp.h"struct udp_pcb *multicast_client_udp = NULL;/** * Function: multicastServerRecv * Description: 组播服务器接收到数据后的回调函数 * @param arg 回调时传递回来的参数 * @param pcb 当前连接的PCB * @param p 存放接收到数据的BUF * @param addr 发送数据的IP地址 * @param port 发送数据的端口号**/void multicastServerRecv(void *arg, struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *addr, u16_t port){ printf("recv remote multicast data\n\r");}/** * Function: createMulticastListen * Description: 创建组播监听端**/void createMulticastListen(){ struct udp_pcb *multicast_udp; ip_addr_t multicast_addr; err_t err_status; //IP4_ADDR(&multicast_addr,224,1,1,210); IP4_ADDR(&multicast_addr, 233, 233, 233, 233); multicast_udp = udp_new(); if( !multicast_udp){ printf("create multicast udp failed\n\r"); return; } err_status = udp_bind(multicast_udp,&multicast_addr,6666); if(err_status != ERR_OK){ printf("bind multicast udp failed\n\r"); return; } igmp_joingroup(IP_ADDR_ANY,&multicast_addr); igmp_joingroup(&veth_netif.ip_addr,&multicast_addr); udp_recv(multicast_udp,multicastServerRecv,NULL);}/** * Function: createMulticastListen * Description: 创建组播的客户端模式**/void createMulticastClient(){ int retValue = 0; err_t err_status; uint8_t i; struct pbuf *udp_data_packet; ip_addr_t ipaddr;//定义IP类型变量 udp_data_packet = pbuf_alloc(PBUF_RAW,20,PBUF_RAM); if(!udp_data_packet){ printf("serial udp memory allocate\n\r"); } IP4_ADDR(&ipaddr,233,233,233,233); if(multicast_client_udp == NULL){ multicast_client_udp = udp_new(); if( !multicast_client_udp){ printf("create udp pcb failed\n\r"); return; } /* 先绑定udp链接 */ err_status = udp_bind(multicast_client_udp,IP_ADDR_ANY,9675); //绑定任意地址和1233端口 if(err_status != ERR_OK){ //绑定失败 printf("serial client udp bind failed\n\r"); return ; } err_status = udp_connect(multicast_client_udp,&ipaddr,4002); //与远程NTP服务器建立连接 if(err_status != ERR_OK){ //创建连接失败 printf("serial client udp create connect failed\n\r"); return; } udp_recv(multicast_client_udp,multicastClientRecv,NULL); } memset(udp_data_packet->payload,0,udp_data_packet->len); memcpy(udp_data_packet->payload,"hello server",13); err_status = udp_send(multicast_client_udp,udp_data_packet); }/** * Function: multicastClientRecv * Description: 组播客户端接收到数据后的回调函数 * @param arg 回调时传递回来的参数 * @param pcb 当前连接的PCB * @param p 存放接收到数据的BUF * @param addr 发送数据的IP地址 * @param port 发送数据的端口号**/void multicastClientRecv(void *arg, struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *addr, u16_t port){ printf("udp client recv data \n\r");//在函数体中添加具体功能}
udp_bind():
0 0
- LWIP中基于UDP SOCKET组播功能的实现
- STM32F103ZET6+ENC28J60+LWIP实现UDP组播
- 基于LwIP socket的UDP客户端
- 基于LwIP socket的UDP服务器
- 基于Udp的socket 实现
- UDP组播的实现
- LWIP之SOCKET的实现
- LWIP之SOCKET的实现
- SOCKET UDP组播 实例
- 编程实现基于UDP的socket应用
- LWIP下UDP组播协议——zynq使用
- UDP实现组播
- UDP组播实现
- STM32 + LWIP + Enc28J60 + 组播实现
- 基于LwIP socket的TCP客户端
- 基于LwIP socket的TCP服务器
- UDP的组播简单实现
- 基于UDP的socket
- css3 特性
- LeetCode之Longest Substring Without Repeating Characters
- Attribute is missing the Android namespace prefix错误
- SPI,IIc总线的区别
- c#递归遍历指定文件夹内的所有文件(包含子文件夹)
- LWIP中基于UDP SOCKET组播功能的实现
- JAVA SHA256加密代码实现
- HTML垂直对齐方式
- spring4.0 mybaties 事务不回滚
- 用 Python 脚本实现对 Linux 服务器的监控
- WoSign CT 谷歌绿色地址栏和提供证书透明信息正式上线
- 解决老项目direct access to Objective-C's isa is deprecated in favor of object_getClass()
- 触摸除输入框以外的其它区域自动隐藏软键盘
- 23种设计模式全解析