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 に答える