2010-08-05 10 views
1

Comment puis-je ouvrir un port spécifique dans android?Comment ouvrir le port dans Android?

J'ai un socket serveur mais la connexion est rejetée car le port est fermé.

try { 
    ServerSocket server = new ServerSocket(2021); 
    Socket client = server.accept(); 
} catch (Exception e) { 
    // TODO Auto-generated catch block 
    a = false; 
    e.printStackTrace(); 
} 
+0

dites-nous ce que vous avez essayé jusqu'à présent et montrez-nous du code. Aussi - répéter la même question est considéré comme mauvais ici. –

+0

Peut-être que l'application doit avoir l'autorisation INTERNET. Vérifie ça. – FeelGood

Répondre

0

Il semble que vous manquez juste une boucle autour de l'appel accept() de sorte que vous pouvez accepter les connexions multiples. Quelque chose comme ceci:

ServerSocket server = new ServerSocket(port); 

while (true) 
{ 
    Socket client = server.accept(); 
    ProcessClientRequest(client); 
} 
+0

Et acceptez-le dans un thread séparé afin qu'il puisse effectuer son travail de manière asynchrone plutôt qu'un à la fois. –

+1

Soupir ... il ne doit pas nécessairement s'agir de discussions. Ne payez que pour ce dont vous avez besoin. –

0

Pour illustrer ce que je voulais dire dans mon commentaire:

ServerSocket server = new ServerSocket(port); 
while (true) 
{ 
    Socket client = server.accept(); 
    new Thread() { 
     final Socket _client = client; 
     // This stuff runs in a separate thread all by itself 
     public void run() { 
      ProcessClientRequest(_client); 
     } 
    }.start(); 
} 
1

Si vous havn't encore eu à travailler, je suggère que vous créez une classe interne qui extends Thread pour remplacer cette instruction entière new Thread() { ... }.start() (J'ai toujours eu du mal à faire fonctionner ces éléments correctement lorsque j'essaie de déclarer un champ d'instance, je m'en tiens simplement aux méthodes de création/remplacement de ce type d'instruction). Je voudrais que la classe interne, disons ClientAnsweringThread, ait un constructeur qui prenne en paramètre le Socket (client) et appelle ensuite ProcessClientRequest(_client); dans la méthode run() comme vous l'avez déjà fait.

Questions connexes