3

我想将套接字中的输入流读入 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(); } }

非常感谢

4

3 回答 3

2

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

于 2012-08-10T11:19:38.437 回答
0

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

萨鲁多斯!

于 2013-03-01T21:31:40.990 回答
0

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

于 2012-08-10T14:28:28.590 回答