Java 服务器在建立TCP连接后立即通过FIN、ACK和RST关闭TCP连接
在MacOSX10.8机器上,我有一个Tomcat7.0.40服务器和一个客户端,都在本地运行。通过三方握手建立TCP连接,然后立即从服务器发送FIN、ACK和RST。客户端收到“来自服务器的文件结束”或“连接重置” TCP序列: 客户端同步Java 服务器在建立TCP连接后立即通过FIN、ACK和RST关闭TCP连接,java,macos,tomcat,tcp,Java,Macos,Tomcat,Tcp,在MacOSX10.8机器上,我有一个Tomcat7.0.40服务器和一个客户端,都在本地运行。通过三方握手建立TCP连接,然后立即从服务器发送FIN、ACK和RST。客户端收到“来自服务器的文件结束”或“连接重置” TCP序列: 客户端同步 服务器同步,确认 客户端确认 服务器[TCP窗口更新]确认 服务器财务,确认 客户端确认 服务器[TCP Dup ACK]确认 客户端获取/myurl/… 服务器RST 详细信息 -客户端和服务器都在本地运行 -第一个GET请求失败。以下请求成功。 -上没
服务器同步,确认
客户端确认
服务器[TCP窗口更新]确认
服务器财务,确认
客户端确认
服务器[TCP Dup ACK]确认
客户端获取/myurl/…
服务器RST
详细信息
-客户端和服务器都在本地运行
-第一个GET请求失败。以下请求成功。
-上没有防火墙
-maxfiles已增加,但没有结果
是什么导致服务器关闭套接字?欣赏提示和想法 编辑:Tomcat的日志具有以下堆栈跟踪: FINE: Error parsing HTTP request header java.net.SocketException: Invalid argument at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:150) at java.net.SocketInputStream.read(SocketInputStream.java:121) at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:516) at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:501) at org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:98) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:928) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724) 精细:解析HTTP请求头时出错 java.net.SocketException:参数无效 位于java.net.SocketInputStream.socketRead0(本机方法) 位于java.net.SocketInputStream.read(SocketInputStream.java:150) 位于java.net.SocketInputStream.read(SocketInputStream.java:121) 位于org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:516) 位于org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:501) 位于org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:98) 位于org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:928) 位于org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 位于org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 运行(Thread.java:724) 及 2013年8月14日下午5:15:17 org.apache.coyote.http11.abstracthttp11处理器进程 精细:解析HTTP请求头时出错 java.io.EOFEException:套接字上意外读取EOF 位于org.apache.coyote.http11.Http11Processor.setRequestLineReadTimeout(Http11Processor.java:174) 位于org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:926) 位于org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 位于org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 运行(Thread.java:724)
您必须违反已配置的访问规则,例如IP地址黑名单,或者发送它不理解的内容。我不熟悉tomcat,但您是否有某种跟踪日志,其中包含更详细的信息?同一个应用程序在同一Mac上与JDK 6一起运行良好。我怀疑问题可能是由JDK1.7.0_25引起的。 Aug 14, 2013 5:15:17 PM org.apache.coyote.http11.AbstractHttp11Processor process FINE: Error parsing HTTP request header java.io.EOFException: Unexpected EOF read on the socket at org.apache.coyote.http11.Http11Processor.setRequestLineReadTimeout(Http11Processor.java:174) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:926) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724)