Bonjour,
Je cherche à programmer une application qui connectera l'émulateur Android de Android Studio a un serveur local sur mon ordinateur. Cependant, lorsque je lance mon serveur, tout se passe bien, mais l'application ne fonctionne jamais quand je la lance sur l'émulateur.
Je vous donne mon code ainsi que mon fichier de log, j'ai beau cherché sur internet des solutions depuis quelques jours je n'arrive pas à faire fonctionner mon code...
Voici le code de ma classe Client sur Android Studio:
Le code de ma classe Serveur sur Eclipse:
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 public class MainActivity extends AppCompatActivity { private static final int portnumber = 50000; private Socket socket=null; Socket client = null; DataOutputStream dataoutput = null; DataInputStream datainput = null; private static final String debugString ="debug"; class MySyncTask extends AsyncTask<Object, Object, Void> { @Override protected Void doInBackground(Object... params) { try { //Connecting Log.i(debugString, "Attempting to connect to server"); client = new Socket("10.0.2.2", portnumber); Log.i(debugString, "Connection established"); } catch (IOException e) { Log.e(debugString, e.getMessage()); } //Ouverture des flux try { InputStream input = client.getInputStream(); datainput = new DataInputStream(input); OutputStream output = client.getOutputStream(); dataoutput = new DataOutputStream(output); } catch (IOException e) { System.err.println("Erreur ouverture des flux joueur"); System.exit(1); } return null; } protected void onPreExecute() { Log.i(debugString,"start"); } } public MainActivity() throws UnknownHostException { } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MySyncTask asyncTask=new MySyncTask (); asyncTask.execute(1000); } public void sendMessage (View view) { EditText editText = (EditText) findViewById(R.id.editText); String nom = null; try { //Send message to server nom=editText.getText().toString(); dataoutput.writeUTF(nom); } catch (IOException e) { Log.e(debugString, e.getMessage()); } } }
Et enfin mon fichier de Log:
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
48
49 class Joueur { Socket joueur = null; DataOutputStream dataoutput = null; DataInputStream datainput = null; String name; String mark; // Constructeur : ouverture des flux Joueur (Socket j) { this.joueur = j; try { InputStream input = j.getInputStream(); this.datainput = new DataInputStream(input); OutputStream output = j.getOutputStream(); this.dataoutput = new DataOutputStream(output); } catch (IOException e) { System.err.println("Erreur ouverture des flux serveur"); System.exit(1); } } } public class Main { private static final int portnumber = 50000; public static void main(String[] args) { ServerSocket serverSocket; Socket socket=null; try { System.out.println("Server starting at port number " + portnumber); serverSocket = new ServerSocket(portnumber); //Client connecting System.out.println("waiting for clients to connect."); socket = serverSocket.accept(); System.out.println("A client has connected"); } catch (IOException e) { e.printStackTrace(); System.exit(1); } Joueur joueur= new Joueur(socket); String nom=null; try { nom = joueur.datainput.readUTF(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(nom); } }
Merci d'avance pour votre temps, j'espère que quelqu'un pourra me débloquer..
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 03-23 13:04:47.850 3499-3499/? I/art: Not late-enabling -Xcheck:jni (already on) 03-23 13:04:47.859 3499-3499/? W/art: Unexpected CPU variant for X86 using defaults: x86 03-23 13:04:48.036 3499-3504/? E/art: Failed writing handshake bytes (-1 of 14): Broken pipe 03-23 13:04:48.036 3499-3504/? I/art: Debugger is no longer active 03-23 13:04:48.037 3499-3504/? I/art: Starting a blocking GC Instrumentation 03-23 13:04:48.259 3499-3499/? W/System: ClassLoader referenced unknown path: /data/app/com.flora.drawmyfriend-2/lib/x86 03-23 13:04:48.596 3499-3499/? W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable 03-23 13:04:49.126 3499-3499/com.flora.drawmyfriend I/debug: start 03-23 13:04:49.130 3499-3522/com.flora.drawmyfriend I/debug: Attempting to connect to server 03-23 13:04:49.132 3499-3522/com.flora.drawmyfriend E/debug: Permission denied 03-23 13:04:49.137 3499-3522/com.flora.drawmyfriend E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1 Process: com.flora.drawmyfriend, PID: 3499 java.lang.RuntimeException: An error occurred while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:318) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) at java.util.concurrent.FutureTask.setException(FutureTask.java:223) at java.util.concurrent.FutureTask.run(FutureTask.java:242) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.InputStream java.net.Socket.getInputStream()' on a null object reference at com.flora.drawmyfriend.MainActivity$MySyncTask.doInBackground(MainActivity.java:45) at com.flora.drawmyfriend.MainActivity$MySyncTask.doInBackground(MainActivity.java:31) at android.os.AsyncTask$2.call(AsyncTask.java:304) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)* at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)* at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)* at java.lang.Thread.run(Thread.java:761)* 03-23 13:04:49.175 3499-3499/com.flora.drawmyfriend I/InstantRun: Starting Instant Run Server
Partager