求助:socket获取数据报错
各位大侠,麻烦帮忙看下这个问题:
描述:
编写socket客户端代码,获取服务器返回的数据,连接服务器以后需要发送验证信息,成功后服务器会一直返回数据(服务器从第三方获取数据,数据以行的形式接收,从第三方接收到数据就返回给客户端),我的客户端以行的形式接收数据,但是需要一直连着服务器获取数据,如果使用循环的话报错。
主要代码:
socket=new Socket("191.165.215.17",8888);
InputStream in = new ByteArrayInputStream("QWAS".getBytes("UTF-8"));
BufferedReader sin = new BufferedReader(new InputStreamReader(in));
PrintWriter os = new PrintWriter(socket.getOutputStream());
os.println(readline);
os.flush();
InputStream ins= socket.getInputStream();
BufferedReader is=new BufferedReader(new InputStreamReader(ins));
String result = is.readLine();
只获取一次is.readLine()的话,没有问题,程序正常执行,结果正确。如果使用while循环多次获取就会报错。
报错信息:
java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
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 client.socket.java.SocketTcp5.main(SocketClient.java:53)
各位大侠帮忙指导一下吧,不胜感激~~