我正在使用 Socket 连接来连接数据库。当我通过 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 的时间的任何一致性。现在数据的长度是静态的,我在试图弄清楚这一点时没有调整它。但是数据的长度将是动态的。