- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在使用 lwip 堆栈来实现 modbus 服务器,但“保持事件”功能不起作用。有人可以看看我的问题吗?
代码:
static void prvweb_ParseHTMLRequest( struct netconn *pxNetCon )
{
struct netbuf *pxRxBuffer;
portCHAR *pcRxString;
unsigned portSHORT usLength;
static unsigned portLONG ulPageHits = 0;
while(netconn_recv( pxNetCon, &pxRxBuffer) != ERR_OK)
{
vTaskDelay( webSHORT_DELAY );
}
if( pxRxBuffer != NULL )
{
/* Where is the data? */
netbuf_data( pxRxBuffer, ( void * ) &pcRxString, &usLength );
if(( NULL != pcRxString )
&& ( !strncmp( pcRxString, "GET", 3 ) ))
{
/*********************************
Generate HTML page
*********************************/
/* Write out the dynamically generated page. */
netconn_write( pxNetCon, cDynamicPage, (u16_t) strlen( cDynamicPage ), NETCONN_COPY );
}
netbuf_delete( pxRxBuffer );
}
netconn_close( pxNetCon );
netconn_delete( pxNetCon );
}
我更改了以下设置:
#ifndef LWIP_TCP_KEEPALIVE
#define LWIP_TCP_KEEPALIVE 1
#endif
#ifndef TCP_KEEPIDLE_DEFAULT
#define TCP_KEEPIDLE_DEFAULT 7200000UL /* Default KEEPALIVE timer in milliseconds */
#endif
#ifndef TCP_KEEPINTVL_DEFAULT
#define TCP_KEEPINTVL_DEFAULT 75000UL /* Default Time between KEEPALIVE probes in milliseconds */
#endif
#ifndef TCP_KEEPCNT_DEFAULT
#define TCP_KEEPCNT_DEFAULT 9U /* Default Counter for KEEPALIVE probes */
#endif
我的代码中是否还有其他必须做的事情?如果我尝试这样做,服务器将在传输 HTML 页面后结束连接。我试图删除 netconn_close( pxNetCon );和/或 netconn_delete( pxNetCon ); ,但这不会给出正确的解决方案。连接将保持打开状态,但我无法再次连接。
那么还有其他我没有使用的设置吗?或者是否需要修改代码?
最佳答案
LWIP_TCP_KEEPALIVE 控制编译以支持 TCP 保活,默认情况下每个连接都关闭保活。
上述应用程序使用 netconn API 来管理它的连接,并且没有 netconn API 来启用 SO_KEEPALIVE 选项。为此,您需要使用 LwIP 的 BSD 类套接字 API 和 setsockopt() 调用:
int optval = 1;
setsockopt(s, SOL_SOCKET, SO_KEEPALIVE, &optval, sizeof(optval));
关于c - lwip 堆栈 netconn api 保持连接 "keep-alive",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29492995/
我有一个奇怪的问题。一段时间以来,我一直在尝试更换一个小型协议(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 模式
我是一名优秀的程序员,十分优秀!