基于LwIP socket的UDP服务器
来源:互联网 发布:linux搭建测试环境 编辑:程序博客网 时间:2024/05/17 05:15
上篇文章介绍了基于LwIP socket的UDP客户端编程的一个大概流程,本文主要介绍基于LwIP socket的UDP服务器的编写步骤,并且比较客户端和服务器之间的区别,UDP服务器编写步骤如下所示:
1、创建一个基于数据包的socket
2、设置本地服务器地址及端口号
3、将本地服务器地址与创建好的socket进行绑定
4、接收绑定好的socket的消息
经过了以上四个步骤以后,一个简单的UDP服务器就搭建好了,其他客户端发来的数据就会被服务器接收下来,其源代码如下所示
/* *receive UDP packet from PC * local server IP:192.168.0.80 or INADDR_ANY */#include <lwip/sockets.h>#include <lwip/err.h>#include <lwip/sys.h>#definePORT50000static RAW_U32 udp_msg[100];static void udp_server_thread(void *p_arg){struct sockaddr_in server_addr;int sock_fd;/* server socked */int err;int count = 0;sock_fd = socket(AF_INET, SOCK_DGRAM, 0);if (sock_fd == -1) {Uart_Printf("failed to create sock_fd!\n");RAW_ASSERT(0);}raw_memset(&server_addr, 0, sizeof(server_addr));server_addr.sin_family = AF_INET;//server_addr.sin_addr.s_addr = INADDR_ANY;server_addr.sin_addr.s_addr = inet_addr("192.168.0.80");server_addr.sin_port = htons(PORT);err = bind(sock_fd, (struct sockaddr *)&server_addr, sizeof(server_addr));if (err == -1) {RAW_ASSERT(0);}while (1) {raw_memset(udp_msg, 0, sizeof(udp_msg));err = recv(sock_fd, (RAW_U8 *)udp_msg, sizeof(udp_msg), 0);Uart_Printf("receive msg: %s", udp_msg);count++;}}void udp_server_init(void){sys_thread_new("udp_server_thread", udp_server_thread, NULL, DEFAULT_THREAD_STACKSIZE, DEFAULT_THREAD_PRIO - 1);}
- 基于LwIP socket的UDP服务器
- 基于LwIP socket的UDP客户端
- 基于LwIP socket的TCP服务器
- LWIP中基于UDP SOCKET组播功能的实现
- 基于UDP协议的Socket服务器
- 基于LwIP socket的TCP客户端
- 基于UDP的socket
- Lwip的UDP例程
- 基于UDP的socket编程- -
- 基于UDP的socket编程
- 基于UDP的socket编程
- 基于UDP的socket编程
- 基于UDP的SOCKET程序
- 基于UDP的socket编程
- 基于UDP的socket编程
- 基于UDP的socket编程
- 基于UDP协议的socket
- 基于UDP的socket通信
- 解决ntp的错误 no server suitable for synchronization found
- 我想这个很牛逼
- 两种跳转方式分别是什么?有什么区别?
- myeclipse安装svn插件
- Receiving Content from Other Apps 接收来自其他应用程序的内容
- 基于LwIP socket的UDP服务器
- EL表达式详解
- 左旋字符串源码
- java操作文件工具类
- 如果更改SimpleButton 按钮中的文本
- wget命令详解
- 小创新,不同业务场景使用不同的map
- 学科前沿技术(人工智能与智能系统中的先驱人物)
- An old Stone Game ~~GarsiaWachs算法