草庐IT

Ruby Net::HTTP 不发送 TCP Keep-Alive 数据包,导致 "Errno::ECONNRESET - Connection reset by peer"异常

我正在与接受HTTPS上的POST请求并以XML响应的API进行交互。远程服务器生成数据需要很长时间,这意味着我的本地客户端在发送POST请求和接收响应之间等待几分钟。有时响应会按预期返回,但有时Ruby(2.3.1p112)在长时间暂停后会引发以下异常:Exceptionoccurred:Errno::ECONNRESET-Connectionresetbypeer/usr/share/ruby/openssl/buffering.rb:178:in`sysread_nonblock'/usr/share/ruby/openssl/buffering.rb:178:in`read_n

javascript - node.js staggering keep alives to large amount of tcp clients

我正在尝试将keepalives从服务器发送到一堆tcp客户端。为了减少响应的服务器负载,我想将保持事件分开。如果我有3000个tcp客户端,并且保持事件时间间隔为60秒,我需要在60秒内错开保持事件消息并每秒发送50条保持事件消息。假设:很多tcp连接(数以千计)Tcp连接持续存在,预计至少会活跃几个小时服务器需要在60秒内知道客户端是否不再连接来自服务器和客户端的其他信息将来回发送Keepalive来自客户端的返回消息包含有用的数据(我认为这排除了UDP)目前,我的想法是将我的tcp连接存储为标准的javascript对象,并将一些id映射到特定的连接本身。然后,每一秒,我都会得到

http - Keep TCP connection keep alive and loop only GET 命令

我需要在每次连接到我的网站和获取数据时节省时间。这是我的工作。ESP模块连接到家庭WiFi。AT+CIPMUX=0-->响应OKAT+CWMODE=1-->响应OKAT+CIPSTART="TCP","http://mysim900.com",80-->响应connectedOKAT+CIPSEND=75-->响应-->>等待数据GET或POST>GEThttp://mysim900.com/sw_status.php?status=list_allHTTP/1.0/r/n/r/n/r/nsendOK.响应200并从我的网站接收所有字节。最后connectionCLOSED.通过重复步

c++ - 使用 boost::asio 配置 TCP keep_alive

这个问题在这里已经有了答案:canyousetSO_RCVTIMEOandSO_SNDTIMEOsocketoptionsinboostasio?(3个答案)关闭8年前。Linux和Windows都支持TCPkeep-alive数据包。它们可以通过(系统相关的)setsockopt调用来激活和配置,参见例如thisarticle对于Linux案例。使用boost::asio时似乎支持保持事件消息,参见thecurrentdocumentation.但是该页面仅涵盖激活它。在对olderpost的几个新回复中有人指出,Boost最近添加了配置操作超时的方法(这避免了对不同系统的setso

iis - 如何为IIS启用TCP keep Alive?

全部,我有一个网站,该网站使用经典的ASP和Crystal报表根据用户在网页中的输入(查询后端数据库)生成报告。如果报告运行时间超过30分钟,则位于客户端和Web服务器之间的防火墙将断开连接,因为它处于空闲状态,因此报告永远不会显示给用户。为了避免这种情况,我需要使用某种保持事件的方式,HTTP或TCP。IIS6上的Windows2000中的Web服务器。我在Windows中为TCPkeepalive创建了注册表项(并禁用了网卡中的TCP卸载功能,我听说这会导致问题),但是IIS没有'似乎默认使用它。我确实在服务器上下载并测试了一个名为TCP/IPBuilder(www.drk.com

c# - Socket Keep-Alive 扩展如何工作? C#

在编写Socket客户端/服务器代码时,我曾想过实现HeartBeat来了解客户端是否还活着,但后来搜索了其他方法,并发现了这段代码,从描述来看,它似乎就是这样做的:publicstaticclassSocketExtensions{//////AstructureusedbySetKeepAliveExMethod///[StructLayout(LayoutKind.Sequential)]internalstructTcpKeepAlive{internaluintonoff;internaluintkeepalivetime;internaluintkeepaliveinter

delphi - idHttpServer(服务器)和 wininet(客户端)上的 TCP Keep Alive

我有一个使用idHttpServer开发的网络服务器应用程序。当客户端连接我的网络服务器时,由于某种未知原因断开连接(不是正常断开连接),我的网络服务器没有收到通知。我知道这是正常行为,但我需要知道客户端何时死亡。有几种方法可以做到这一点。我知道2个好方法:1-实现心跳机制。客户端套接字通知服务器它仍然存在(需要一些工作和一些代码才能使其工作)2-TCPKeepAlive.这是我最喜欢的方式,因为它不需要太多的代码和工作。但我对此有一些疑问。这是否可以与idHttpServer(用于服务器)和wininet函数(对于客户端)?这真的像预期的那样有效吗?我的意思是,当客户端一直死机时,服

netty中TCP keep-alive判断client是否断开

我正在尝试确定客户端是否已关闭来自netty的套接字连接。有办法做到这一点吗? 最佳答案 在客户端通过close()关闭套接字并且TCP关闭握手已成功完成的通常情况下,channelInactive()(或channelClosed()中的3)事件将被触发。但是,在不寻常的情况下,例如客户端计算机由于断电或拔下LAN电缆而脱机,可能需要很长时间才能发现连接实际上已断开。要检测这种情况,您必须定期向客户端发送一些消息并期望在一定时间内收到其响应。它就像一个ping-你应该在你的协议(protocol)中定义一个周期性的ping和pon

http - HTTP Keep Alive时长与TCP超时时长的关系

我试图了解TCP/IP和HTTP超时值之间的关系。这两个超时值是不同的还是相同的?大多数Web服务器允许用户通过一些配置来设置HTTPKeepAlive超时值。Web服务器如何使用该值?此值是否仅在底层TCP/IP套接字上设置,即HTTP保持事件超时和TCP/IP保持事件超时是否相同?还是区别对待?我的理解是(可能不正确):Web服务器在底层TCP套接字上使用默认超时(即无限期),而不管配置的HTTPKeepAlive超时如何,并创建一个工作线程来对指定的HTTP超时间隔进行倒计时。当工作线程达到零时,它会关闭连接。编辑:我的问题是关于两个超时持续时间之间的关系或差异,即当HTTP保持

HTTP Keep Alive 和 TCP Keep Alive

HTTPKeepAlive是如何实现的?它在内部使用TCPKeepAlive吗?如果不是,服务器如何检测客户端是死是活? 最佳答案 我知道这是一个老问题,但仍然:HTTPKeep-Alive是一项允许HTTP客户端(通常是浏览器)和服务器(网络服务器)通过同一TCP连接发送多个请求/响应对的功能。这减少了第2、3、...HTTP请求的延迟,减少了网络流量和类似的。TCPkeepalive是完全不同的野兽。它通过发送小数据包来保持TCP连接打开。此外,当发送数据包时,这用作检查,以便在连接断开时立即通知发送方(请注意,否则情况并非如此