首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Contiki-ng中CSMA水平嗅探和应用嗅探

Contiki-ng中CSMA水平嗅探和应用嗅探
EN

Stack Overflow用户
提问于 2020-12-28 17:39:18
回答 1查看 132关注 0票数 0

库贾的错误

我使用的是Contiki以及udp-server和udp-client的例子。我想做几件事: 1-我希望客户端节点嗅探数据包,然后在它发出数据包后发送到服务器。我成功地做到了这一点,但是有一些事情我不明白:当我在udp-客户机中开始嗅探时,将这一点添加到代码中:

代码语言:javascript
复制
radio_value_t radio_rx_mode;
NETSTACK_RADIO.get_value(RADIO_PARAM_RX_MODE, &radio_rx_mode);
NETSTACK_RADIO.set_value(RADIO_PARAM_RX_MODE, radio_rx_mode & (~RADIO_RX_MODE_ADDRESS_FILTER));

这似乎只捕获udp客户端应用程序级别上的数据包,当我增加QUEUEBUF_CONF_NUM以允许服务器接收这些数据包时,它只捕获节点自己的数据包。知道为什么会这样吗?

b-当我在input_packet函数中的csma.c文件中执行同样的操作时,它确实捕获了所有的数据包,但是,我不知道如何设置,以便一旦在csma级别捕获数据包,节点就可以从应用程序级别发送数据包?

2-一个简单的问题来确认我所做的是否正确,我想在本例中启用ReTx,所以我将其添加到project文件中:

代码语言:javascript
复制
  #define CSMA_MAX_FRAME_RETRIES 7

这会使数据包重传吗?还是在做其他的事?

在这方面的任何帮助都将受到赞赏。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-28 18:10:13

  1. 从CSMA代码中,您可以尝试显式调用应用程序代码中定义的函数,或者将事件发送到应用程序的进程。如果这看起来太难看了,也许最干净(但不那么有效)的方法是用process_post()作为第一个参数调用PROCESS_BROADCAST。这将将事件广播到所有活动进程,包括应用程序的进程。
  2. 默认情况下,CSMA最多可执行7次重传。若要禁用此值或更改重传次数,请将#define CSMA_CONF_MAX_FRAME_RETRIES转换为project-conf.h文件中的某个非默认值。请注意这个预处理器指令的名称中的CONF
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65481685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档