Bonjour / Bonsoir,
Je suis en train de développer une application Android qui doit échanger des donnés avec un serveur pas l'intermédiaire des sockets. (L'application = Client)
Pour faire des Test, j'ai développer sous NetBeans un client et un serveur qui doivent échanger des messages. Jusque à la, tout marche correctement. Maintenant, je copie le code client de Netbeans dans mon application Android. Je lance le serveur (sous NetBeans) puis, je lance mon application.
Mais à partir de ce moment, lorsque l'application ce lance, elle ne ce connecte pas au serveur et me retourne l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 1111): connect failed: ENETUNREACH (Connection refused)
Voici la ligne ou ce trouve l'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Socket s = new Socket("localhost", 1111);
Et voici le code Client Android:
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
68
69
70
71
72
73
74
75
76
77
78
79 import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; public class Load_Activity extends Activity { static InputStream is; static OutputStream os; static InputStreamReader isr; static PrintWriter pw; static BufferedReader br; Socket s; static String req = ""; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.content_load); onConnect(); } public void onConnect(){ new AsyncTask<Void,Void,String>(){ @Override protected String doInBackground(Void... arg0) { try { s = new Socket("localhost", 1111);<br> is = s.getInputStream(); isr = new InputStreamReader(is); br = new BufferedReader(isr); os = s.getOutputStream(); pw = new PrintWriter(os, true); while(true){ try { req = br.readLine(); System.out.println("Server: "+req); } catch (Exception e) { e.printStackTrace(); } } } catch (Exception e) { e.printStackTrace(); } return null; } }.execute(); } }
Je précise avoir bien ajouter la balise suivant dans mon fichier AndroidManifest:
Pouvez-vous me dire pourquoi cette erreur apparaît sous Android alors que le client sous NetBeans lui ce connecte bien sans retourner d'erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <uses-permission android:name="android.permission.INTERNET"/>
Merci.
Partager