尝试读取inputStream时连接重置

时间:2012-08-10 10:52:33

标签: java sockets inputstream

我想将socket中的输入流读入byteArray,但是我得到了以下错误:

java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(Unknown Source)

我不知道为什么因为在我读完inputStream之前我不会关闭我的插座

try {
            in = connexion.getSocket().getInputStream();
            out = connexion.getSocket().getOutputStream();

            byte[] buffer= new byte[2048] ;          
            ByteArrayOutputStream baos= new ByteArrayOutputStream();
            int read = 0;
            while((read = in.read(buffer)) > 0) // exception thrown here
            {
                baos.write(buffer, 0, read);
            }
            reception = baos.toByteArray();


        } 

        catch (IOException e) {
            e.printStackTrace();
        }
        finally{
            try{
                in.close();
                out.close();
                connexion.getSocket().close();
            }
            catch(IOException ioException){
                ioException.printStackTrace();
            }
        }

服务器端:

 public static void main(String[] args) throws Exception {
        ServerSocket s = new ServerSocket(port,2);
        Socket soc ;

        while(true){
        soc = s.accept(); } }

非常感谢

3 个答案:

答案 0 :(得分:2)

在阅读之前,服务器似乎已关闭连接。这可能是您发送的请求或最终问题的问题。

答案 1 :(得分:0)

解决 我在检索输入流之前设置了一点暂停,现在效果很好 谢谢大家

答案 2 :(得分:0)

我看到你已经解决了这个问题,但我最近遇到了类似的情况。我发现实际上导致这个问题的是你读取字节数组的数组大小。我尝试读取的数据比连接ConnectionReset的套接字读取的数据多,尝试使用大小为1。

Saludos!