bonjour,
je veux ouvrir une session entre un client (telephone) et un serveur web, la c'est bon il suffit d'utiliser une socket mais mon problème c'est que je veux que le client soit à l'ecoute de tout evenement du serveur c'est a dire je dois implémenter un listener (dès que le serveur notifie le client que le fichier x est pret pour le téléchargement, le client le télécharge dans l'immédiat (je souligne la contrainte temps reel)) c'est pour ça je compte faire un service qui fera la tache de l'ecoute des evenements provenants du serveur le hic, primo je sais pas si c'est vraiment faisable (peut etre un web service convient mieux ) secondo je sais pas comment je peux combiner entre socket et service, voici le code de ma socket (TCP)

l'activité
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package com.e2esp.socket.test;
 
import android.app.Activity;
import android.os.Bundle;
 
public class SocketTest extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
 
        Thread cThread = new Thread(new TCPClient());
 
         cThread.start();
 
    }
}
client:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.e2esp.socket.test;
 
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
 
import android.util.Log;
 
public class TCPClient implements Runnable {
 
 
    public void run() {
         try {
 
        	 InetAddress serverAddr = InetAddress.getByName("192.168.1.2");//TCPServer.SERVERIP
 
        	 Log.d("TCP", "C: Connecting...");
        	 Socket socket = new Socket(serverAddr, TCPDesktopServer.SERVERPORT);
        	 String message = "Hello from Client";
		     try {
		    	 Log.d("TCP", "C: Sending: '" + message + "'");
		    	 PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
 
		    	 out.println(message);
		    	 Log.d("TCP", "C: Sent.");
	             Log.d("TCP", "C: Done.");
 
             } catch(Exception e) {
                 Log.e("TCP", "S: Error", e);
		      } finally {
		        socket.close();
		      }
         } catch (Exception e) {
              Log.e("TCP", "C: Error", e);
         }
    }
}
serveur:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package com.e2esp.socket.test;
 
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
 
public class TCPDesktopServer implements Runnable{
 
    public static final String SERVERIP = "127.0.0.1";
    public static final int SERVERPORT =80 ; //4444
 
    public void run() {
         try {
        	 System.out.println("S: Connecting...");
 
             ServerSocket serverSocket = new ServerSocket(SERVERPORT);
             while (true) {
 
            	  Socket client = serverSocket.accept();
            	  System.out.println("S: Receiving...");
 
            	  try {
                      BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
                      String str = in.readLine();
                      System.out.println("S: Received: '" + str + "'");
                    } catch(Exception e) {
                        System.out.println("S: Error");
                        e.printStackTrace();
                    } finally {
                    	client.close();
                        System.out.println("S: Done.");
                    }
 
             }
 
         } catch (Exception e) {
             System.out.println("S: Error");
             e.printStackTrace();
         }
    }
 
    public static void main (String a[]) {
    	Thread desktopServerThread = new Thread(new TCPDesktopServer());
    	desktopServerThread.start();
    }
}
merci d'avance pour tout aide