发 帖  
原厂入驻New
[问答] 如何在PIC32 MZ2048 ECG100上运行和声1.04
60 PIC32
分享
我正在与XC 1.34在PIC32 MZ2048 ECG100上运行和声1.04。我目前使用TCPIP_TCP_WasReset来检查连接的有效性,但我注意到,如果实际网络电缆被删除而不是关闭连接应用程序,WasReset永远不会设置为真。关闭连接应用程序将将其设置为真。我使用的较老的堆栈在和谐之外检测到了这种情况,发生了什么?是否有另一种方法来检测这一点。在这种情况下,我的套接字似乎永远保持打开状态,使我无法使用套接字。
0
2020-5-14 11:50:48   评论 分享淘帖 邀请回答
19个回答
我在Oracle 1.03Y001中遇到了同样的问题,在这种情况下,网页上有一个运行Ajax的Web服务器。我有6个http套接字,超过2-3天它们就锁定了,我想可能是因为我在ajax事务中关闭了我的浏览器,但是我也可以通过反复断开电缆来触发它。我的“修复”是向TCP .C添加一个函数来返回套接字TCP状态。然后,我从http任务中调用并检查它,如果套接字卡住了超过40秒,发出一个TCPIP_TCP_Abort并清理http套接字。到目前为止,Web服务器上没有更多的锁定。不幸的是,我没有时间检查1.06.02以查看它是否被修复。
2020-5-14 12:01:57 评论

举报

我通过在套接字上设置KePiVal活性选项来解决这个问题。
2020-5-14 12:08:00 评论

举报

我记得,TCP应该是这样工作的,因为它允许连接从间歇连接问题中恢复。也就是说,如果您拔出电缆并重新插入它,那么TCP堆栈应该恢复并继续传输数据。您可以使用TCP.-alive或最好是应用程序级别的周期性心跳来确保对等点仍然存在。如果希望在拔掉电缆时关闭连接,那么应该能够使用TCPIP_STACK_NetIsLin.(TCPIP_NET_HANDLE h)来检查是否存在该连接。我们过去在旧的MLA堆栈中使用TCP.-alives,但是有一些奇怪的问题,其中LabVIEW/Windows即使在发送.-alives时关闭连接之后仍然保持连接打开,所以我们改为应用程序级的心跳,并且这种奇怪没有返回。可能还有别的事情发生,但是我们找不到。
2020-5-14 12:22:45 评论

举报

我发现堆栈进入一个插座没有恢复的位置,它永远保持锁定(直到一个板重置)。那不可能是正确的行为。
2020-5-14 12:32:51 评论

举报

TCP套接字可以永远保持打开,这与链路状态无关。只有当套接字用户或另一方试图关闭它,而不是当链路出现故障时,套接字才会关闭。这是正常/必需的行为。使用TCPIP_STACK_NetIsLin.()来检测电缆是否被拔出ged或要通知的动态注册处理程序之一。或启用KEEP_ALIVE选项以强制套接字与另一方通信。但是,不应该发生这种情况。请提供更多详细信息,以便我们进行调查。
2020-5-14 12:43:03 评论

举报

在我的服务器应用程序中,我遇到了关于和谐1.0701的问题。如果远程客户端的连接丢失,WasReset永远不会设置为true,并且NET_PRES_SocketIsConnected函数总是返回true。参数是:Keep Alive TimeOut=10000ms,Max unacked keep.=6。
2020-5-14 12:56:27 评论

举报

如何使用UpETCPIPTCPPopOPTSESET(…)?我写了以下代码,void*tcpForceFlush=(void*)1;TCPIP_TCP_OptionsSet(MySocket,TCP_OP._KEEP_ALIVE,tcpForceFlush);但是在函数内部运行时,它发生了异常错误。
2020-5-14 13:05:03 评论

举报

对于TCP_OP._KEEP_ALIVE,参数需要是指向TCP_OP._KEEP_ALIVE_DATA结构的指针,而不是值“1”。堆栈试图将那个“1”引用为TCP_OP._KEEP_ALIVE_DATA的地址,并且在那里有一个异常。
2020-5-14 13:24:16 评论

举报

我的第三个参数出了什么问题吗?我无法克服它。我从HTTP.C中发现了一个很难使用的例子,并试图模仿它。奇怪的是它从来没有例外。(下面的代码)请给我代码示例如何使用这个函数。我需要它,因为我希望固件必须在10秒内自动检测突然从互联网断开的未预期的断开链接。void*tcpForceFlush=(void*)1;TCPIP_TCP_OptionsSet(pHttpCon->socket,TCP_OP._NODELAY,tcpForceFlush);
2020-5-14 13:43:50 评论

举报

我想我已经知道如何使用这个函数了。我声明TCP_OP._KEEP_ALIVE_DATA keepAlive;-->参见图片附件。但是它似乎总能在大约2分钟之后检测到断开的链接。需要使它更快到10秒。该怎么做?
2020-5-14 14:03:31 评论

举报

keepAliveTmo的0没有帮助——使用一个有效值,比如1-2秒。如果需要更快,则需要检查链接状态。
2020-5-14 14:12:02 评论

举报

如果是0,那么它将采用默认值---gt;TCPIPPTCPKEPEGYAVEVETIMOUT==10000(ms),但总是2分钟…
2020-5-14 14:22:31 评论

举报

我改为,keepAlive.keepAliveEnable=1;keepAlive.keepAliveTmo=10;如何在超时设置10s准确时间?
2020-5-14 14:38:19 评论

举报

那么,如果将超时设置为10秒,计时不正确或发生了什么?
2020-5-14 14:49:38 评论

举报

当10时,实际的触发器是~1s,但是即使我把它提高到100,触发器仍然在2分钟。遗憾的是:keepAlive.keepAliveEnable=1;keepAlive.keepAliveTmo=100;//在mskeepAlive.keepAliveUnackLim=1;
2020-5-14 15:08:17 评论

举报

我假设“触发器”是网络上TCP数据包的速率?你有一个WiReSARK日志,或者你是如何精确测量保持生命频率的?
2020-5-14 15:26:40 评论

举报

我的意思是,TCPIP_TCP_WasReset函数应该在链接中断一定时间之后就变为真。当它变为真时,我就可以开始为我喜欢的事件做一些事情:keepAlive.keepAliveTmo=100;//在mskeepAlive.keepAliveUnackLim=5;我现在修改为上面的代码,func2分钟后TCPIpl TCPpA才变为真,超时链接下降。这个超时时间可以预先确定吗?因为在MLA中它运行顺利,没有问题!
2020-5-14 15:34:37 评论

举报

我刚刚用一个TCP客户端套接字做了一个测试来验证你所声称的。对我来说,它工作得很好。我把保持活动间隔设置为1秒,限制设置为5、10等。我总是收到超时过期后套接字关闭的报告。您使用什么版本的和谐?
2020-5-14 15:45:21 评论

举报

我弄不明白。你有1个吗?结构TCPPopOpj.KePyAvivEx数据在单元MS中有成员KePayValeMo。
2020-5-14 16:00:42 评论

举报

只有小组成员才能发言,加入小组>>

113个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表