ejp java_java.net.SocketException: Connection closed by remote host — oracle-tech

在服务器端,代码尝试从SSLSocket接收客户端的输入并发送确认响应,但在写入确认字符串到输出流时抛出了SocketException,异常信息提示连接被远程主机关闭。尽管已确认客户端未关闭连接,但仍然无法成功发送回执。问题可能源于SSL套接字的处理或数据传输过程中的其他因素。
摘要由CSDN通过智能技术生成

server side code:

SSLSocket socket = (SSLSocket) ssf.getServersocket().accept();

BufferedReader reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));

BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

boolean done=false;

while (!done) {

String line=reader.readLine();

if (line!=null) System.out.println(line);

else done=true;

}

writer.write("Acknowledgment!");

writer.flush();

writer.close();

writer = null;

The code above throws a following exception:

java.net.SocketException: Connection closed by remote host

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.e(DashoA12275)

at com.sun.net.ssl.internal.ssl.AppOutputStream.write(DashoA12275)

at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(StreamEncoder.java:336)

at sun.nio.cs.StreamEncoder$CharsetSE.implFlushBuffer(StreamEncoder.java:404)

at sun.nio.cs.StreamEncoder$CharsetSE.implFlush(StreamEncoder.java:408)

at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:152)

at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:213)

at java.io.BufferedWriter.flush(BufferedWriter.java:230)

at formis.openssl.SSLReceiverEngine$ReceiverRunner.run(SSLReceiverEngine.java:104)

at java.lang.Thread.run(Thread.java:534)

after I receive message from client and then would like to send back an acknowledge, but the latter throws

an exception when write the string to outputstream....i can make sure that i do not write any code to close the connection on the client side. any solution to this?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值