草庐IT

java - netty中如何在断开连接后自动连接到TCP服务器

我有一个场景,我正在使用nettyNIO建立TCP连接,假设服务器出现故障,那么当它再次出现时我如何自动连接到服务器?或者有什么方法可以在服务器上附加可用性监听器吗? 最佳答案 您可以有一个DisconnectionHandler,作为客户端管道上的第一件事,它通过立即尝试重新连接或安排重新连接任务来对channelInactive使用react。例如,publicclassDisconnectionHandlerextendsChannelInboundHandlerAdapter{@Overridepublicvoidchann

node.js - 当 logstash 服务器断开连接时在 nodejs 中出现 ECONNREFUSED 错误

我正在使用node-bunyan和bunyan-logstash-tcp在我的nodejs应用程序中将日志发送到logstash(1.4.2)和elasticsearch(1.4.2)。每当logstash服务器断开连接或无法访问时,我的nodejs应用程序崩溃并出现以下错误ERROR-------events.js:72thrower;//Unhandled'error'event^Error:connectECONNREFUSEDaterrnoException(net.js:904:11)atObject.afterConnect[asoncomplete](net.js:895

C# 和 TCP 客户端(异步)具有非常高的 CPU 负载以及如何检测断开连接的客户端?

如果多个客户端连接,CPU负载90+。如果我启动监听器并且没有连接,一切都很好。如果我有一个或多个连接,我的CPU负载就会非常高。usingSystem;usingSystem.Collections.Generic;usingSystem.Net;usingSystem.Net.Sockets;usingSystem.Text;usingSystem.Threading;namespaceTest.Socket{publicclassServer{ListWorkListenerThread;TcpListenerListener;publicServer(){WorkListene

c# - TcpClient 在异步读取期间断开连接

我有几个关于完成tcp连接的问题。客户端使用Tcp连接到我的服务器,在使用listener.BeginAcceptTcpClient(ConnectionEstabilishedCallback,null);接受客户端后,我开始使用networkStream.BeginRead(....)。当我等待消息时客户端断开连接会发生什么?(例如断电、断网等)我怎么知道它什么时候发生?如果在成功读取之后,我做了一些事情,然后调用networkStream.Close();client.Close();客户端会看到什么?如何“优雅地”终止连接?如果我正在等待读取(使用BeginRead),然后(在

c# - StreamWriter 是否抛出异常底层连接断开?

我正在使用通过Tcpstream实例化的StreamWriter像这样streamWriter=newStreamWriter(tcpClient.GetStream());我对关于异常的后续调用的行为感到困惑。以下两个函数预计会引发IOException令人惊讶的是,当tcpClient连接到的服务器断开连接时,它们不会引发IOException,因此底层TCP客户端连接已断开。这两行执行时不会引发任何异常。为什么?streamWriter.WriteLine(strBuffer);streamWriter.Flush();编辑:这篇文章也帮助我理解了原因,除了这里的专家回复。htt

tcp - 如何检测 tcp 客户端与 gen_tcp 断开连接?

我正在尝试使用gen_tcp模块。有服务器端代码的示例,我遇到了麻烦。%%First,Ibindserverportandwaitforpeerconnection{ok,Sock}=gen_tcp:listen(7890,[{active,false}]),{ok,Peer}=gen_tcp:accept(Sock),%%Hereclientcalls`gen_tcp:close/1`onsocketandgoesaway.%%AfterthatIamtryin'sendsomemessagetoclientSendResult=gen_server:send(Peer,>),%%N

c# - 为什么我的客户端服务器套接字连接不断断开

我有一个使用套接字的C#.NET客户端服务器应用程序编写器。我经常收到日志消息(大约每小时4条)说这条消息,Anexistingconnectionwasforciblyclosedbytheremotehost在这种情况下,错误发生在“服务器”端。我决定使用wireshark来分析发生了什么,我明白了。没有延迟,这一切都在几秒钟内发生。Server>Client[PSH,ACK]Seq=55653Ack=4472Win=63940Len=148Client>Server[ACK]Seq=4472Ack=55801Win=4038Len=0Server>Client[PSH,ACK]S

java - 检查 Java TCP 服务器上的客户端断开连接 - 仅输出

我有一个JavaTCP服务器,当客户端连接到它时,它会每30秒向客户端输出一条消息。严格要求客户端不向服务器发送任何消息,并且服务器不向客户端发送除30秒间隔消息之外的任何数据。当我断开客户端连接时,服务器直到下次尝试写入客户端时才会意识到这一点。因此,服务器最多可能需要30秒才能识别断开连接。我想做的是每隔几秒检查一次断开连接而不必等待,但我不确定如何做到这一点,因为a)服务器没有从客户端接收b)服务器不能发送任何其他数据。任何人都可以对此有所了解吗?谢谢。 最佳答案 即使您的服务器没有从客户端“接收”,客户端套接字上的非阻塞读取

ios - 为什么 GCDAsyncSocket 总是在读取超时后断开连接?

我查看了GCDAsyncSocket.m中处理读取超时的代码。如果我不延长超时时间,套接字似乎已关闭,并且没有选项可以让套接字保持事件状态。我不能使用无限超时(timeout=-1),因为我仍然需要知道它何时超时,但也不希望它断开连接。我不确定这背后有什么原因。有人知道吗?-(void)doReadTimeoutWithExtension:(NSTimeInterval)timeoutExtension{if(currentRead){if(timeoutExtension>0.0){currentRead->timeout+=timeoutExtension;//Reschedule

.net - 在 .NET 中检测客户端断开连接的最佳实践?

我正在用C#开发一个服务器,它只能接受一个客户端,我需要知道这个客户端何时断开连接才能接受另一个连接请求。我使用的是第一个Socket,它持续监听Socket.BeginAccept的连接请求并接受或拒绝客户端。当客户端被接受时,Socket.EndAccept返回的新套接字用于客户端和服务器之间的通信。然后,服务器使用Socket.Begin/EndReceive等待来自客户端的命令并发送响应。服务器使用类似Telnet的协议(protocol),这意味着每个命令和每一行响应都必须以\r\n结尾。为了检测客户端是否已断开连接,我安装了一个计时器,它每500毫秒向客户端发送一条空消息(