草庐IT

javascript - TCP异常断开如何处理?

情况是我使用Node.js启动了一个TCP和一个HTTP服务器。第一个旨在通过TCP连接与硬件连接。我有100个TCP客户端并保持它们与服务器的连接。正常情况下,TCP客户端会通过四次握手与TCP服务器断开连接。我遇到的问题是100个中的一些客户端通过异常方式与服务器断开连接,例如以太网电缆出现问题或断开,并且没有通过正常方式与服务器断开连接,然后tcp服务器是挂断了,我不知道是哪一个断开了,而httpserver是好的。所以我无法使用tcp服务器连接硬件客户端。我尝试try/catch错误,但没有成功。 最佳答案 好吧。只需要使用

java - 如何模拟套接字断开连接?

我的应用程序将文件上传到我客户的服务器,但他想要特殊的“暂停上传”功能。我不能简单地关闭连接,甚至不能终止进程——他需要断开连接,否则他的服务器应用程序会删除未完成的文件——所以我必须在代码中模拟“拔掉电缆”——你有什么建议吗?感谢您的帮助,对不起我的英语:)吉尔卡 最佳答案 您可以使用Mockito为您的单元测试创​​建一个Socket模拟,正如在这个问题上所建议的:TestingJavaSockets 关于java-如何模拟套接字断开连接?,我们在StackOverflow上找到一个

python - 无论如何检测 Python SocketServer.TCPServer 中的客户端断开连接?

我试过下面的代码但没有成功。基本上,我需要一种方法来检测客户端断开连接。我想避免使用喋喋不休的心跳类型系统。无论如何检测套接字何时不再打开(客户端已断开连接或已损坏/等)?classThreadedTCPRequestHandler(SocketServer.StreamRequestHandler):defhandle(self):whileTrue:self.data=self.rfile.readline().strip()ifnotself.data:print'Clientclosedconnection'break我认为这行得通,但似乎行不通(也尝试删除了strip())。

sockets - 如何获取 Synapse 中的客户端数量和连接/断开事件?

我正在尝试使用Synapse(TTCPBlockSocket)而不是Indy,但是通过官方帮助和演示我无法理解如何获取TCP客户端的数量,并且我没有找到有关的连接/断开事件Synapse,请给我一些提示或示例代码。提前致谢! 最佳答案 正如TLama在评论中指出的那样,每个传入连接都应该使用HR_Accept触发OnStatus事件。如果我查看TBlockSocket源,每次断开连接,无论是通过协议(protocol)还是通过错误,都应该在连接套接字上触发一个带有HR_SocketClose原因的OnStatus事件。

C#\Java 和 Java\C# 对客户端\服务器 - 客户端(套接字)关闭时正常断开连接

与其说这是一个问题,不如说这更像是一件值得讨论的事情。背景:我有两对服务器/客户端,一对用Java编写,一对用C#编写。两对都在做同样的事情。当我使用Java\Java和C#\C#组合时没有问题。我想使Java\C#和C#\Java的组合也能正常工作。I\O没问题,我使用的是表示XML格式字符串的字节数组。我一定会使用TCP。我需要关心优雅断开连接,在Java中没有这样的事情。当您关闭客户端套接字时,服务器端套接字仍处于被动关闭状态-因此处理该套接字的服务器线程仍然存在,如果有很多客户端,我最终可能会遇到数千个不必要的线程。在C#中,调用TcpClient.Available来确定缓冲

c - TCP Keepalive 是确定断开链接的唯一机制吗?

我最近遇到了一个问题,即TCP服务器和客户端之间的中间链接出现故障。如果主服务器关闭,客户端有连接到辅助服务器的要求。当主服务器被关闭时(例如..通过在终端上执行^C),TCP关闭序列通过并且客户端成功检测到断开的链接并尝试辅助。但是,如果中间链路发生故障,客户端和服务器将不会意识到这一点。客户端可以检测到的唯一方法是它的TCP缓冲区何时被失败的“发送”操作填满。作为对此的解决方案,“TCPKeepalive”机制已被使用。这工作令人满意。我的问题是“TCPKeepalive”是唯一的解决方案吗?-帕布 最佳答案 Keepalive

c# - 断开连接后如何重新使用或重新连接到同一端口上的套接字?

我正在做一个涉及单个服务器程序和单个客户端程序的简单项目。它需要检查客户端是否已连接(从服务器端),反之亦然。当客户端失去互联网时,服务器需要知道它已断开连接。然后,客户端在恢复网络后需要重新连接到服务器当客户端失去互联网然后重新获得互联网时,我无法使用相同的端口重新连接。我尝试让服务器监听而不关闭套接字,但也没有用。在重用方面,我已经为套接字尝试了很多属性,而且我也尝试了挥之不去的东西。我已经看到它可能会卡在操作系统在注册表中设置的某些TIME_WAIT属性上(在Windows的情况下)。重申一下,我的问题是能够在客户端丢失并重新获得互联网后使用相同的套接字(更重要的是相同的端口)重

TcpClient/NetworkStream 未检测到断开连接

我使用TcpClient和NetworkStream为我们的游戏创建了一个简单的持久套接字连接。正常连接、发送消息和断开连接(退出应用程序/服务器关闭/等)都没有问题。但是,我遇到了一些问题,在某些情况下,客户端没有检测到与服务器的断开连接。我对此进行测试的最简单方法是拔掉wifi盒上的网络电缆,或将手机设置为飞行模式,但它发生在游戏中,否则应该是稳定的wifi。通过NetworkStream等文档,它说检测断开连接的唯一方法是尝试写入套接字。很公平,除了,当我尝试时,写入通过,好像没有任何问题。我可以像这样写多条消息,一切似乎都很好。只有当我重新插入电缆时,它才会发现它已断开连接(所

java - 在断开连接的套接字上写入不会抛出

作者:socket.setSendBufferSize(1);socket.setTcpNoDelay(true);writer=newBufferedWriter(newOutputStreamWriter(socket.getOutputStream(),"UTF-8"));用法如下:try{writer.write(packet.toXML());writer.flush();...}catch(Exceptionioe){if(!done){done=true;...}}这是客户端代码。当它的服务器断开套接字(也是java代码)时,为什么客户端只会在5-10分钟后抛出?它不应该

当 USB 电缆循环时,Android ADB-over-WiFi 仍然断开连接(?!?)

我正在从事一个基于USB的项目,因此我通过WiFiTCP/IP使用ADB。工作完美,坦率地说,这种通过无线连接进行调试的能力是我多年来使用过的最酷的开发技巧之一。真的,真的很棒。我正在研究与USB连接和断开连接相关的各种Intent。我发现只要USB数据线的物理状态发生变化——无论是插入还是拔出——ADB无线连接都会丢失。我可以重新建立它并通过DDMS恢复调试,但到那时已经耗费了大量的CPU时间。这使得调试USB连接事件基本上是不可能的。我无法理解为什么ADB在通过TCP/IP(通过WiFi,不少于此)连接时仍会对USB事件采取行动。我是否缺少ADB配置详细信息?你如何告诉ADB忽略U