Bom dia, tenho um aplicativo android fazendo requisições através de paginas jsp e estou tendo uma desagradavel surpresa, mesmo nas requisições onde não tenho resposta o consumo está absurdo tanto nos dados recebidos quanto nos enviados. Tenho um handler que manda de 1 em 1 minuto a posição do aparelho e mesmo nao solicitando resposta estou verificando que o medidor de consumo de bytes recebidos começa a voar, alguem já passou por algo parecido e tem alguma solução para isto? A quantidade de informações é extremamente pequena (coisa de 40 caracteres, equivalente a 40bytes certo?) por envio e a medição aumenta em kb rapidamente.
Desde já agradeço quem tiver alguma informação a respeito.
Luciano
[quote=MAGO0102]Bom dia, tenho um aplicativo android fazendo requisições através de paginas jsp e estou tendo uma desagradavel surpresa, mesmo nas requisições onde não tenho resposta o consumo está absurdo tanto nos dados recebidos quanto nos enviados. Tenho um handler que manda de 1 em 1 minuto a posição do aparelho e mesmo nao solicitando resposta estou verificando que o medidor de consumo de bytes recebidos começa a voar, alguem já passou por algo parecido e tem alguma solução para isto? A quantidade de informações é extremamente pequena (coisa de 40 caracteres, equivalente a 40bytes certo?) por envio e a medição aumenta em kb rapidamente.
Desde já agradeço quem tiver alguma informação a respeito.
Luciano[/quote]
Você é cobrado pelo que trafega e não pelos 40 bytes.
Aposto minha cueca furada que vc está usando HTTP para transmitir os dados.
Com estes 2 linhas, respondi sua charada.
Com certeza boone, obrigado pelo interesse na ajuda, percebi q a cada requisição mesmo quando não recebo nada, consumo 1kb e faço 5 requisições por minuto.
Gostaria de passar essas requisições para socket, acredito que ai sim seria cobrado somente pelos bytes trafegados, mas falha demais, alguem tem um conhecimento profundo sobre sockets e poderia me ajudar nessa implementação?
Desde já agradeço a atenção.
Construi um server em socket assim:
classe principal
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(PORTA);
System.out.println(“INICIADO”);
while(true){
Socket socket = serverSocket.accept();
new ServicoThread(socket).start();
}
}
classe serviço extendendo thread
private final Socket socket;
public ServicoThread(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
DataInputStream in = new DataInputStream(socket.getInputStream());
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
ExecutaServico ClasseExecutora = new ExecutaServico(in);
ClasseExecutora.enviar(out);
out.close();
in.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
classe executora
public ExecutaServico(DataInputStream in) {
String nomeServico = “”;
try {
this.servico = DataInputStream.readUTF(in).toString().trim();
if(servico.trim().equals(“02”)){
nomeServico = “INSERE”;
this.nome = DataInputStream.readUTF(in);
this.posicao = DataInputStream.readUTF(in);
} catch (IOException ex) {
Logger.getLogger(ExecutaServico.class.getName()).log(Level.SEVERE, null, ex);
}
public void enviar(DataOutputStream out) throws IOException{
if (this.servico.equals("02")) { //INSERE
int i = cadastrarPosicao();
if(i > 0){
out.writeUTF("1");
} else {
out.writeUTF("0");
}
}
public synchronized int cadastrarPosicao(){
int i = 0;
try {
cs = bd.conectar().prepareCall("{call RSDB_0005_SPI(?,?)}");
cs.setString(1, nome);
cs.setString(2, posicao);
i = cs.executeUpdate();
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
try {
if (cs != null){
cs.close();
cs = null;
}
} catch (SQLException c){ }
bd.desconectar();
}
return i;
}
Até aqui fiz certo? Tem alguma coisa que precise ser implementada a mais? Nunca usei socket por isso a insegurança.
Agora estou tendo problemas com DeadLocks, alguem poderia me ajudar, preciso “aparecer” com esta solução até segunda-feira, por favor…
Luciano