InputStream in = s.getInputStream();
寻找代码42行.是这句 num = in.read(buf); 这句话前后代码加起来意思就是获取服务端的返回信息."发送成功"
这个Exception后面还有一串字符.Connection reset
我百度了一下,发现 出现Connection reset 异常大致可能性是:
1 客户端关闭,但服务端还在写入.
2 服务端关闭,但客户端还在读取.
我还发现执行连接后要传送的东西已经传送好了.但就是没有"传送完毕"字样.那么问题就大致明了了. 是num = in.read(buf);这句获取语句的错误!
那么我就思考,为什么以前用BufferedReader语句就不会发生错误呢?
查阅了API,从Socket到InputStream,再到String类中toBytes()都看了,传递参数无误.
因时间和能力原因,无法知晓其更深的错误原因.于是把InputStream in = s.getInputStream();改成
BufferedWriter out =
new BufferedWriter(new OutputStreamWriter(sk.getOutputStream()));
和
PrintWriter out = new PrintWriter(s.getOutputStream());
问题依旧.
只不过在BufferedReader里面把写的代码flush一下就会出现问题.
因时间和能力原因,无法知晓其更深的错误原因.于是把InputStream in = s.getInputStream();改成
BufferedWriter out =
new BufferedWriter(new OutputStreamWriter(sk.getOutputStream()));
和
PrintWriter out = new PrintWriter(s.getOutputStream());
问题依旧.
只不过在BufferedReader里面把写的代码flush一下就会出现问题.