Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 财务及;socket通信中的RST集_Java_Sockets_Ssl_Tcp - Fatal编程技术网

Java 财务及;socket通信中的RST集

Java 财务及;socket通信中的RST集,java,sockets,ssl,tcp,Java,Sockets,Ssl,Tcp,现有的套接字通信已启用TLS 1.2,为此我提供了单向/双向支持,在这样做时,我观察到套接字中频繁重置。 在使用wire shark FIN分析数据包时,发送了ACK&RST标志,我认为这是重置或中止连接的原因 我的问题是: 在socket对话中,我相信,在很多情况下,我在尝试readObject()时观察到了EOFexcetpion。这会导致插座复位或断开 如果希望套接字连接永久连接,如何忽略FIN&RST标志并保持套接字连接永久 当套接字发现空闲时,断开连接是否有效。是通过RST还是FIN标

现有的套接字通信已启用TLS 1.2,为此我提供了单向/双向支持,在这样做时,我观察到套接字中频繁重置。 在使用wire shark FIN分析数据包时,发送了ACK&RST标志,我认为这是重置或中止连接的原因

我的问题是:

  • 在socket对话中,我相信,在很多情况下,我在尝试readObject()时观察到了EOFexcetpion。这会导致插座复位或断开

  • 如果希望套接字连接永久连接,如何忽略FIN&RST标志并保持套接字连接永久

  • 当套接字发现空闲时,断开连接是否有效。是通过RST还是FIN标志

  • …我如何忽略FIN&RST标志

    简单的答案是你不能

    该协议规定,一旦收到FIN,连接就处于被拆除的过程中。您可以尝试做任何您想做的事情,但是不管您做什么,FIN数据包的发送者都会离开

    当您将数据发送到不希望收到您的数据包的端点时,即当您尝试忽略FIN时,RST标志将发送回您

    保持连接“永久”打开需要连接双方的合作,如果网络出现故障,连接仍可能因超时而失败

    当套接字发现空闲时,断开连接是否有效

    是的,断开或拆卸闲置连接的插座是有效的。如果未拆除空闲连接,则在启动新连接时,连接(套接字连接)将继续保留并消耗系统资源/内存。此外,每个套接字连接都位于一个新端口上,因此随着新连接的不断出现(如果您的服务器像web服务器一样繁忙),您将继续使用tcp端口
    还有两种不同的状态,FIN_WAIT_1和FIN_WAIT_2(请参阅)
    那么底线呢,,继续保持套接字连接始终或永久连接可能不是一个好主意-对于正在接受大量客户端流量的繁忙服务器来说肯定不是一个好主意-随着新连接的不断到来,新接受的连接将继续保留并消耗或使用本地tcp端口

    所有传入的TCP连接都使用与接收它们的侦听套接字相同的端口。FIN_WAIT_1和FIN_WAIT_2是端口状态,而不是FIN的风格,这是一个段标志。正确的是,它们是端口状态,而不是FIN的“风格”,这是问题所在,是段头()中的一位,因此不可能有两种风格。你的陈述毫无意义。是的,这是正确的。FIN_WAIT_1和FIN_WAIT_2是两种状态(如RFC 793中定义的,不同的状态为-连接在其生命周期内经过一系列状态)FIN-WAIT-1-表示等待来自远程TCP的连接终止请求,或对先前发送的连接终止请求的确认。FIN-WAIT-2-表示等待来自远程TCP的连接终止请求。(我将编辑答案以删除单词flavor)是的,FIN_WAIT和其他港口国实际上与这个问题没有任何关系。您关于端口的错误仍未纠正。答案的前两句话是唯一能准确回答问题的部分<代码>EOFEException本身不会导致RST,但您接下来的响应操作可能会导致RST。2.你不能:看@jiJmGarrison的答案。3.(a) 是的,丢失空闲连接是有效的,(b)断开连接会导致FIN,除非您做了一些奇怪的事情,比如没有读取所有挂起的数据。@user207421,据我所知,我的服务器代码生成了一个带有executer服务的套接字实例,这个在循环中使其在套接字断开连接时重新创建。但我在这里观察到,由于某种原因,服务器代码在发送消息socket get被关闭后,当客户端尝试readObject()时,它会过早地抛出EOF异常,导致socket close(),为了解决这个问题,我可以使socket.shutdown()在客户端真正关闭它之前仍能读取吗?我的意思是将socket.shutdown()添加到服务器端和客户端,而不是socket.close()?服务器不会重新创建任何内容。它接受新的连接
    EOFEException
    表示对等方提前关闭了连接。如果它发生在
    readObject()
    中,则表明您在发送端做错了什么<据我所知,这里不需要代码>关机()。您需要发布客户端代码。