- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 lwip netconn API(使用 esp-open-rtos)为 ESP8266 编写简单的 SNTP 客户端。问题是我无法从服务器收到答案。
代码(没有错误检查和调试消息):
#include <string.h>
#include <lwip/api.h>
#include <lwip/err.h>
struct sntp_message
{
u8_t li : 2;
u8_t vn : 3;
u8_t mode : 3;
u8_t stratum;
u8_t poll;
u8_t precision;
u32_t root_delay;
u32_t root_dispersion;
u32_t reference_identifier;
u32_t reference_timestamp[2];
u32_t originate_timestamp[2];
u32_t receive_timestamp[2];
u32_t transmit_timestamp[2];
} __attribute__((packed));
#define SNTP_MSG_LEN (sizeof(struct sntp_message))
int16_t sntp_sync(char* server)
{
err_t err;
int16_t result = ERR_OK;
ip_addr_t sntp_server_address;
struct netconn* connection = NULL;
struct netbuf* send_buffer = NULL;
struct netbuf* receive_buffer = NULL;
struct sntp_message* send_buffer_data = NULL;
err = netconn_gethostbyname(server, &sntp_server_address);
connection = netconn_new(NETCONN_UDP);
err = netconn_connect(connection, &sntp_server_address, 123);
send_buffer = netbuf_new();
send_buffer_data = netbuf_alloc(send_buffer, SNTP_MSG_LEN);
memset(send_buffer_data, 0, SNTP_MSG_LEN);
send_buffer_data->vn = 4;
send_buffer_data->mode = 3; // Mode client.
err = netconn_send(connection, send_buffer);
err = netconn_recv(connection, &receive_buffer); // Here netconn_recv block my thread, and no data received. If i set timeout, i have timeout error.
return result;
}
我的代码有什么问题?我是否需要在接收数据之前绑定(bind)我的连接(通过 netconn_bind)?或者我忘了别的东西?
最佳答案
不要发明自行车。 Simon Goldschmidt 已经为 LwIP 编写了 SNTP。 Link .在那里你可以找到lwip-contrib描述和 git repo 。您还可以在 github 或任何地方寻找镜像(可能会升级)。
关于c - lwip netconn api - 无法接收来自 SNTP 服务器的应答,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39064017/
我有一个奇怪的问题。一段时间以来,我一直在尝试更换一个小型协议(protocol)转换器(基本上是以太网的双向串行...主站和从站),以获得具有更多功能的东西。 背景故事 经过大量的逆向工程,我发现了
我正在 ST Cortex M3 设备上创建服务器。我正在使用 lwip API 和 FreeRTOS。一切正常,但响应时间很慢。我目前使用的是 lwip 1.3.2 和 FreeRTOS 7.3。
目前我正在尝试在嵌入式板上移植 LWIP(轻量级 TCP/IP 堆栈)。 在查看代码的过程中,我想出了一个数组声明(在 memp.c 文件中),它看起来很奇怪,我过去从未见过这种类型的声明。 虽然它是
我正在为一个没有操作系统的嵌入式系统 (Zybo) 实现一个 TCP 客户端,我完全是 LwIP 的新手。在谷歌上搜索了一段时间后,我发现了一些关于如何使用它的示例。 我想知道是否有任何方法可以通过它
前言 。 前面章节太长了,不得不分开. 这里已源码为主,默认读者已知晓概念或原理,概念或原理可以参考前面章节,有分析. 参考:李柱明博客: https://www.cnblogs.co
前言 终于到接口层了. 原文:李柱明博客: https://www.cnblogs.com/lizhuming/p/17442931.html 。 。 框架描述 前面我们已经学完
我使用在stm32处理器(stm32f407)上使用的套接字api运行freeRTOS和lwip 1.4.1。 总的来说,它工作得很好。 我可以使用udp和tcp发送和接收数据。 但是在3到7天的时间
我正在 echo 服务器 lwIP 下使用以太网通信。我想通过以太网捕获从 DMA 到主机的样本。系统通过UART采集样本。 我无法让 lwIP 在不等待 ACK 的情况下发送超过 2 个高于 150
我有一个运行 LwIP 服务器 (v1.2) 的嵌入式系统,我需要能够将数据数组流式传输到客户端的 javascript 中吗?我正在考虑使用 chrome 和一些 HTML5 功能,所以有些人建议使
在浏览了 LWIP 文档之后,我写了一个简单的 tcp echo 服务器代码。为了编译它并创建一个可执行文件,我编写了以下 Makefile。现在,当我运行命令 make all 时,它会为包含在 m
我正在尝试从 lwip 定义“ip_addr”。那是我的代码: #include "lwip/tcp.h" #include "ip_addr.h" ... struct ip_addr ip; 但是
美好的一天! 我想制作一个客户端并将其连接到 netcat 简单服务器。 1) 使用默认设置和#define 编译的库(唯一的东西——我设置了一些调试信息)2) 将 lib 链接到项目(工作正常)3)
我看到了 lwIP有一些 AutoIP(又名 IPv4LL,又名 RFC 3927 )代码,但我不知道它是否在 Zeroconf 中做了任何更高的事情堆栈,即 mDNS 和 DNS-SD (与 RFC
简单地,我通过在接收回调函数中检查 pbuff 的有效负载来检查并获取发送到我的 microplaze 的数据,并且它可以在我可以看到 microplaze 回显我的消息的地方工作,但是当我尝试将它们
我正在将 LwIP 与 FreeRTOS 结合使用。我的项目基于此 URL FreeRTOS with LwIP project 上的示例。我还将 LPC1769 与 LPCXpresso 版本 6.
我正在使用Xilinx Ethernetlite(LWIP)设计。仅当buf = 32时,我才能通过以太网将数据从KC板传输到PC(Hercules)。但是我的实际缓冲区大小是1024。如何将缓冲区大
所以,我有一个有效的 TCP Echo 示例。我试图完成的是能够接收 TCP 传输,以及通过 TCP 和 UDP 发送数据。我正在使用原始 LWIP 并将有一个我将与之交互的 PC 应用程序。我希望能
在 echo 示例中,我们有这个函数可以再次发送相同的数据包,以便回显数据,我想更改它以便发送固定数据,无论用户发送什么,所以我更改了这个: err = tcp_write(tpcb, p->
我在读取和存储 TCP 服务器接收到的数据时遇到了问题。我正在使用 LWIP 库和 NUCLEO-F746ZG 板。我想我必须在执行 es->p 时获取数据。我读过,你必须使用 payload 但我不
在我的 STM32F7 上,我必须使用串行端口连接 3G 调制解调器。我可以使用 AT 命令与调制解调器通信。我想使用 LWIP 中的 PPPos(PPP over serial)库进入 PPP 模式
我是一名优秀的程序员,十分优秀!