Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
socket
10
socket应用方案选择
发布于 2020-10-22 10:24:25 浏览:1219
订阅该版
本人之前进行嵌入式开发均使用AT命令,对socket基本没有使用过。 现在切换到RTT,我打算在目前的项目中使用socket,有一些未决的方案,请各位大佬指导一下。 应用背景: 嵌入式IOT设备使用UDP与Server进行数据交互; 交互的数据有两类: 1.嵌入式IOT设备上传数据给Server,Server给出回应数据确认已收到; 2.Server下发命令修改嵌入式IOT配置; 备选方案1: 1.对每一条需要发送到server的数据,在发送时创建socket,使用sendto发送数据,并使用recvfrom接收server回应。recvfrom之前设置超时; 2. 对于server下发的cmd,发到了哪个socket呢?或者与服务器约定下发cmd一定是以收到heartbeat帧来触发,这样就可以用heartbeat的socket来接收server下发的cmd; 备选方案2: 设置一个全局socket,所有的数据收发均由这个socket来操作。 同时,使用方案2的话,我打算创建2个thread,一个thread_tx,一个thread_rx 可能的伪代码如下: void thread_tx(void) { 获取信号量 调用sendto发送数据; } void thread_rx(void) { 设置超时 recvfrom接收数据 } 疑问是:如何保护这个全局的socket,因为如果在tx的时候rx进行运行了或者rx的时候tx运行了,可能会发生某些错误 我认为:方案2需要在socket上做一个缓存区(队列?链表?)来存放需要发送的数据,而且由于recvfrom是阻塞的(虽然设置了超时),数据的实时性不够好。方案1是可以做到能实时性高一点,但是需要server端配合。
查看更多
2
个回答
默认排序
按发布时间排序
Ethen
2020-10-22
这家伙很懒,什么也没写!
根据您的描述,建议如下: 1.服务器发送命令时设置为广播模式 2.命令协议加上设备id 这样虽然很多设备都受到了指令,但是只有和自身设备id一样的命令才会生效。
Alex.Pan
2020-10-22
这家伙很懒,什么也没写!
想了想,我还需要一个通信监控进程。 这个进程用来监控netdev的状态, 当netdev由down--->up,创建socket,创建tx和rx 进程。 当netdev由up--->down,delete tx/rx进程,close socket。 同时还应当在网络异常导致socket异常时,进行tx/rx的重新创建以及socket的close,open 不知道是不是该这样?
撰写答案
登录
注册新账号
关注者
0
被浏览
1.2k
关于作者
Alex.Pan
这家伙很懒,什么也没写!
提问
21
回答
28
被采纳
1
关注TA
发私信
相关问题
1
W5500 如何实现断开重连?
2
AT组件连接BC26并使用Webclient软件包GET方式请求失败
3
Posix Socket采用select机制最多能监听多少个Socket
4
socket第三个参数无效
5
添加SAL组件后socket相关函数均提示declared implicitly
6
mqtt pipe 里面使用到了dfs, socket 是怎么关联起来dfs的?
7
closesocket函数调用会阻塞
8
基于AT Socket的测速工具
9
关于网络编程socket
10
你好,网络编程遇到bug,判断可能是系统级别的。
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
TinyUSB Demo运行教程
2
RT-Thread学习大礼包一键带走!
3
freemodbus从机调试说明
4
【1024】瑞萨 RA 系列 BSP 制作与适配最新版本的 Keil 、 RSC、固件,较新的 FSP
5
基于 RT-Thread 星火一号开发板的俄罗斯方块
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
ART-Pi
FinSH
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
cubemx
PWM
flash
packages_软件包
freemodbus
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
出出啊
1516
个答案
342
次被采纳
小小李sunny
1440
个答案
289
次被采纳
张世争
799
个答案
171
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
1
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
4
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部