草庐IT

response-time

全部标签

node.js - Node : TCP socket server only returns data the first time

我正在尝试在node.js中编写一个小型中继脚本,用于监听本地套接字上传入的TCP连接,并在获得连接时将流量转发给第3方。它还必须从第3方获取任何返回的数据并将其发送回原始本地套接字。我试过像http://delog.wordpress.com/2011/07/19/a-tcp-relay-mechanism-with-node-js/这样的代码它确实有效,但它要求发送者是一个正在监听套接字本身的服务器,我的实用程序旨在与任何试图创建出站TCP连接的程序一起使用。不幸的是,我遇到的问题是第一次一切都很好,客户端将数据发送到“路由器”程序,路由器将其转发到另一台服务器,然后从客户端返回数

tcp - 为什么 TIME_WAIT 状态需要 2MSL 长?

在一个TCP连接中,要求执行主动关闭的一端在TIME_WAIT状态停留2MSL的时间。为什么它需要2MSL?很多人说一个MSL是给最终ACK的,另一个MSL是给重传的FIN的。但是,FIN的RTO比MSL短很多,FIN不需要等待MSL重传。所以,他们的解释对我来说没有意义。任何人都可以举出一个具体的例子来说明那段时间段是如何交换的吗? 最佳答案 图1.TCP连接的数据包交换。为什么会存在TIME_WAIT状态?>一书给出了答案:TherearetworeasonsfortheTIME_WAITstate:ToimplementTCP

tcp - 远程登录协议(protocol) : response to break

我有一个C++服务器应用程序,它提供一个监听TCP端口供支持人员连接。他们可以发出命令并获得响应。从应用程序的角度来看,它工作正常。当他们使用telnet(1)进行连接时,如果他们(出于某种原因)键入^C,就会出现我的问题。我的服务器看到telnet发送给我的已解析控制字符,我可以根据需要忽略或处理它们。但是telnet客户端本身进入某种状态,它停止将我的服务器的响应输出到客户端屏幕。我知道我可以1)告诉他们不要使用telnet或2)告诉他们在telnet应用程序内或通过执行toggleautoflush~/.telnetrc或其他。但如果可能的话,我更愿意做的是在服务器中使用正确的协

c - 为什么RST包不需要TIME_WAIT状态?

我知道TIME_WAIT是为了防止一个连接的延迟段被误解为后续连接的一部分。在连接处于TIME_WAIT等待状态时到达的任何段都将被丢弃。在我的实验中,当客户端发送RST数据包而不是FIN数据包时,我看不到TIME_WAIT。为什么?服务器while(1){intlen=sizeof(structsockaddr);fd=accept(sfd,&remote,&len);read(fd,buf,sizeof(buf));strcpy(buf,"HelloClient");write(fd,buf,strlen(buf));close(fd);}客户端res=connect(sfd,re

sockets - 为什么 SCTP 不需要 TIME_WAIT 状态?

我正在阅读“UNIX网络编程:套接字API”,它提到SCTP不需要像TCP那样的TIME_WAIT状态,因为它使用了验证标记。为什么会这样?我理解为什么验证标签可以解决重复数据包的问题,​​因为接收方可以确定数据包是否属于当前SCTP关联,但最终的SCTPSHUTDOWN-COMPLETE数据包肯定会丢失,就像TCP中的最终ACK一样丢失,因此执行主动关闭的对等方仍然必须保持某种状态来处理此事件,就像TCP一样。 最佳答案 在这种情况下不需要维护状态信息。RFC4960为未知(突然)数据包定义了一种默认处理方式。比方说,你的协会有两

linux - 没有 TIME_WAIT 连接,为什么?

如果我有sysctltw_reuse=0和tw_recycle=0,并且netstat没有报告任何TIME_WAIT连接,这意味着......?它是两个服务器之间的本地网络连接,A->B,A在netstat中与B有TIME_WAIT连接,但B与A没有。 最佳答案 只有关闭通信的连接端才能处于TIME_WAIT状态,见相关UNIXSocketFAQ时序图。RememberthatTCPguaranteesalldatatransmittedwillbedelivered,ifatallpossible.Whenyoucloseasoc

java - 奇怪的 SocketExceptions : connection reset and Connection timed out

我有一个JavaTCP服务器和一个AndroidTCP客户端。服务器等待请求,然后将50MB的数据发送到Android客户端(客户端通过循环数组读取并覆盖数据,因此数据不会保存在手机上。)一切正常,花花公子,但有时客户端会崩溃有了这个:java.net.SocketException:Connectiontimedout服务器得到这个:java.net.SocketException:connectionreset客户端循环读取,直到接收到所有数据(我允许它在一次调用中读取的最大数据是1.5MB。服务器发送如下:connectionSocket.getOutputStream().wr

解决docker拉取镜像报错:Error response from daemon: Get “https://registry-1.docker.io/v2/“: dial tcp

1、问题:今天做完一个新项目,搭建了一个新的虚拟机,打算使用docker来搭建各种环境,发现拉取镜像报错2、报错信息:Errorresponsefromdaemon:Get"https://registry-1.docker.io/v2/":dialtcp如下:3、解决过程一看,挺新奇,一开始只是简单的以为我打错命令了,以为docker没有这个镜像,然后查询下mysql镜像:dockersearchmysql发现是有的,说明我没有打错,然后翻译了一下,显示说:来自守护程序的错误响应:Get“https://registry-1.docker.io/v2/“:拨号tcp然后我重启docker试试

c# - 端口卡在 Time_Wait

我在C#中有一个TCP隧道。我需要打开和关闭隧道,这是我在服务器和客户端之间的应用程序。我正在使用它来关闭数据连接以测试另一个应用程序。我必须使用特定的端口。根据我等待重新连接的时间长短,在第二次、第三次、第n次连接上,我在绑定(bind)套接字时收到10048错误代码-“地址已在使用中”。关闭套接字时,我会执行ShutDown.Both和Close以清除端口,但是当我在命令提示符下执行netstat时,我仍然发现端口处于TIME_WAIT中。我还将套接字设置为无延迟。最后我试着做一个循环来检查端口的状态,但它以某种无限循环结束。我认为这是4分钟TIME_WAIT规则。我有一个显示ne

c# - 如何修复 "a connection attempt failed because the connected party did not properly respond after a period of time ..."错误?

我正在用C#制作游戏,我想显示对手的进度(Action等)。所以我通过TCP协议(protocol)将游戏中的事件发送给对手。我已经在本地主机上尝试了我的应用程序并且它可以工作但是当我尝试使用我的外部地址以便通过Internet进行通信时我在类TcpInformer.Connect()中收到以下错误:aconnectionattemptfailedbecausetheconnectedpartydidnotproperlyrespondafteraperiodoftime,orestablishedconnectionfailedbecauseconnectedhosthasfaile