Autore Topic: Inserire un timer alla connessione TCP  (Letto 470 volte)

Offline ste9206

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S4
  • Sistema operativo:
    Windows 8
Inserire un timer alla connessione TCP
« il: 28 Marzo 2015, 09:31:41 CET »
0
Ciao a tutti  :-) ho creato questo intentService per leggere/scrivere su un socket TCP e funziona senza problemi. Il codice è il seguente:
Codice (Java): [Seleziona]
 protected void onHandleIntent(Intent intent)
    {
        String add = intent.getStringExtra("address");
        Log.d("add",add);
        int porta = Integer.parseInt(intent.getStringExtra("port"));
        InetAddress serverAddr = null;
        try
        {
            serverAddr = InetAddress.getByName(add);
            socket = new Socket(serverAddr, porta);
            socketHandler.setSocket(socket);
         
         
            final PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
            out.print("go");
            out.flush();

            final byte[] bytes = new byte[1000];
            int counter;
            String reader;
            final InputStream data = socket.getInputStream();

            int numRead = 0;

            if ((numRead = data.read(bytes)) >= 0)
            {
                reader=new String(bytes, 0, numRead);
            }

            if (reader.equals("Let's go"))
            {
             //socket connected
            }

            pingTimer = new Timer();
            pingTimer.scheduleAtFixedRate(new TimerTask() {
                String reader; int r;

                public void run()
                {


                   out.write("ping");
                   out.flush();

                   if(out.checkError())
                   {
                      onDestroy();
                   }
                }

            }, 0, 20000);

            InputStream readeIn = socket.getInputStream();
            char [] buffer = new char[1024];

            BufferedReader in = new BufferedReader(new InputStreamReader(readeIn));

            while((counter = in.read(buffer)) != -1)
            {

             //read here
            }

        catch (UnknownHostException e)
        {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
            onDestroy();
        }
    }

    public void onDestroy()
    {
     //destroy socket
    }
   

quello che ora vorrei fare è questo: una volta che ho creato la mia connessione TCP vorrei mettere un timer al socket, per esempio 3 minuti: se in questi 3 minuti non viene letto nulla, il socket si chiude da solo e viene chiusa la connessione TCP; se invece viene letto qualcosa, allora il timer del socket viene riportato a 3 minuti e cosi via. E' possibile implementare ciò? Cosa devo aggiungere in più al codice?