java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
at java.io.InputStreamReader.read(InputStreamReader.java:167)
at java.io.BufferedReader.fill(BufferedReader.java:136)
at java.io.BufferedReader.readLine(BufferedReader.java:299)
at java.io.BufferedReader.readLine(BufferedReader.java:362)
at com.eagle.service.AutoUpdate.run(AutoUpdate.java:43)
环境:j2se socket编程时,服务器端报错
原因1:服务器端用BufferedReader,时,没有读到一行
解决:客户端用PrintWriter, pw.println(),不能用pw.print(),因为br.readLine()是读一行
环境:j2se socket编程时,服务器端/客户端在br.readLine()时报错
原因2:服务器端用BufferedReader,br.readLine()时,客户端/服务器已经退出,但是并未通过服务器/客户端,
即服务器端/客户端的socket还没有关闭,当用br.readLine()时就会出现这种情况
解决:在关闭客户端时要socket.close(),同时还要向服务器发送一条退出的信息,这样让服务器知道某个客户端已经关闭,它就可以终止对此客户端的线程了,反之服务器也是一样