0

データベースへの接続にソケット接続を使用しています。InputStream を介してデータベースからデータを取得すると、完全なデータが返されることもありますが、ほとんどの場合、不完全なデータ (5%/95%) が返されます。データベースが送信するEOFがありますが、それは約5%の時間しか取得できません。

    @Override
    protected Socket doInBackground(Void... params) {


        Socket client = null;
        try {
            client = new Socket(SocketHelper.IP_ADDRESS, SocketHelper.PORT);

            //output message
            OutputStream output = client.getOutputStream();
            output.write(message.getBytes("UTF-8"));


            //parse response 
    //blocks here more of the time
            SocketHelper.parseData(client.getInputStream());


        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


        return client;
    }

私の解析メソッドでは、EOF を探し、通常は InputStream を閉じ、そこで Socket を閉じます。EOFに達した時間の一貫性が見つかりません。現在、データの長さは静的です。これを理解しようとしている間は調整していません。しかし、データの長さは動的になります。

4

1 に答える 1