草庐IT

FIN-WAIT

全部标签

php - 如何避免TCP连接卡住PHP Socket(FIN_WAIT1)

我有一个symfony命令,它在Debian9计算机上与主管一起启动时运行。它打开一个TCP侦听器套接字,从端口上的许多设备接收消息。工作一段时间后(15-20小时),它停止工作并阻塞TCP端口。这个问题发生在运行php7.3和apache2的debian9计算机上。这是打开TCP套接字的代码:protectedfunctionexecute(InputInterface$input,OutputInterface$output){try{$this->io=newSymfonyStyle($input,$output);$this->logger->info('StartTCPsoc

sockets - TCP TIME_WAIT问题

我读过一本TCP和套接字编程书。我有一个问题,TCP的TIME_WAIT状态应该保持2MSL的时间周期为书中说。但是互联网如何探索类似的应用程序没有这个问题?根据文档,它是4分钟,但在Internetexplore我什至不必等待10秒来刷新网页?这是如何运作的?我很困惑,请解释。 最佳答案 有几种可能性,我在下面列出了其中一些。首先,并非所有session都经过TIME_WAIT状态。如果对方关闭连接,本地转换为ESTABLISHED、CLOSE_WAIT、LAST_ACK和CLOSED,所以有不涉及TIME_WAIT。其次,TIM

c - 在 C 中,使用 TCP 套接字从读取调用中获取 0 意味着收到了 FIN?

有时我似乎得到0,这意味着我得到的只是一个header,这是否意味着我应该假设我收到了一个FIN并关闭了那个套接字?提前致谢! 最佳答案 是的。零通常表示文件结尾。“文件结尾”的含义取决于您使用的文件描述符类型。在TCP套接字的上下文中,据我所知,您可以读取零的唯一方法是收到FIN。相比之下,如果收到RST,read()将返回-1和errno==ECONNRESET。 关于c-在C中,使用TCP套接字从读取调用中获取0意味着收到了FIN?,我们在StackOverflow上找到一个类似的

windows - CLOSE_WAIT 状态问题

我在生产服务器上看到许多处于CLOSE_WAIT状态的连接,几乎没有问题。请指教。我知道windows寄存器有以下参数:TcpTimedWaitDelay在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters根据微软资料(http://social.technet.microsoft.com/Forums/en-US/windowsserver2008r2networking/thread/4288d218-fbf9-4489-b869-384a05dea83d/),TIME_WAIT的默认值是4分钟

c++ - 套接字接收流在接收到 FIN 数据包时是否关闭?

我正在尝试弄清楚如何实现优雅的断开连接(4次握手)。首先,我使用以下代码发送一个FIN数据包:shutdown(socket,SD_SEND);这将导致发送套接字发送流被关闭。现在当对方收到FIN数据包时,它也会发送它的FIN数据包:shutdown(socket,SD_SEND);我的问题是:接收FIN数据包会自动关闭套接字接收流,因此无需显式关闭它:shutdown(socket,SD_RECEIVE); 最佳答案 让我们把你的问题分成几个部分:你说:FirstIsendaFINpacketusingthefollowingco

android - 如何在 android 中为 tcp 套接字强制发送 RST 而不是 FIN

So_linger确实关闭了套接字但连接正常关闭,我们如何在android中发送RST而不是FIN 最佳答案 试试这个:socket.setLinger(true,0);socket.close();更多信息here. 关于android-如何在android中为tcp套接字强制发送RST而不是FIN,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7352111/

python - 检测套接字关闭的原因 : FIN vs RST

是否可以检测为什么socket在Python中关闭,即对方发送的是FIN还是RST?我知道检测对方是否已发送FIN或RST的唯一方法是从套接字读取,如果您得到空(字节)字符串,则我们收到了FIN或RST。但是如何知道是哪一个呢?importasyncioimportsocketasyncdefasync_main(loop):server_sock=socket.socket(family=socket.AF_INET,type=socket.SOCK_STREAM,proto=socket.IPPROTO_TCP)server_sock.setblocking(False)serve

java - 如何检测 FIN - java 应用程序中的 tcp 标志?

我在两台计算机之间建立了持久的TCP连接(第二个不在我的控制之下)。第二台计算机每时每刻都会发送FIN标志,并且首先必须关闭相应的连接(将FIN标志发送回第二台计算机)。我怎么知道第二台计算机发送了FIN标志以及我什么时候必须调用我的Java应用程序的socket.close()方法? 最佳答案 通常,您必须读取连接,当这为EOF或适当的IOException返回-1时,您可以关闭连接。注意:SocketTimeoutException并不意味着连接已关闭。一个例子。booleanok=false;try{intb=in.read(

networking - 如果 FIN/ACK 没有收到 ACK 响应,如何关闭 tcp 连接?

在用LinuxC编写的tcp程序中我想关闭一个tcp连接我使用了close(sockfd)我注意到此函数将向另一个对等方发起FIN/ACK数据包但是如果另一个对等点由于网络问题或tcp序列号不一致(例如另一个对等点的tcp堆栈崩溃)而没有响应ACK然后似乎无法关闭tcp连接它会一直处于FIN_WAIT1状态如何处理?在这种情况下如何关闭tcp连接? 最佳答案 TCP处理它。你不必处理它。你无法处理它。 关于networking-如果FIN/ACK没有收到ACK响应,如何关闭tcp连接?,

linux - 为什么epoll_wait(),在5s~10s后返回,TCP连接超时

我创建了一个非阻塞套接字,然后使用epoll来管理套接字。我没有在epoll_wait上设置超时。但是我发现epoll在5s到10s内返回,然后我检查SO_ERROR上的getsockopt,发现连接超时。为什么这么短的时间就超时了?我尝试使用工具来限制TCP包。场景是这样的:当我的客户端发送一个SYN以连接到服务器时。但服务器无法在5到10秒内发回ACK。然后epoll_wait返回。并检查SO_ERROR。我得到一个EIMTEDOUT。我就是不明白为什么超时时间这么短,5s到10s。是我客户端的问题还是epoll的问题? 最佳答案