Socket中shutdownOutput问题
使用Socket做了一个服务程序,与客户端建立连接后,首先由客户端发过来一个XML请求,服务器端接收到请求后,根据XML内容进行业务处理,处理完成后,再把处理结果返回给客户端,并关闭Socket链接。
目前,由于数据库压力问题,经常导致服务器端业务处理时间过长,客户端由于始终没有得到回应,认为处理已经超时,会主动断开Socket链接。
因此,当超时情况发生时,服务器端在向客户端回写数据时,系统应该能够弹出IO异常,以提示写入失败或链接断开的。但是目前代码中未有任何的提示,进行逐步代码排查时,发现客户端向服务器端写入数据后,主动关闭了scoket的输出流sock.shutdownOutput();如果把该行代码注释掉时,当出现超时时服务器端就可以正常检查出来回写失败,如果加入就检查不出来,现在想问问大家这到底是什么原因?