2012-02-13 2 views
0
public class Server extends AsyncTask<Void, Intent, Void> { 

    private final Context context; 

    public Server(Context context) { 
     this.context = context; 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     try { 
      ServerSocket server = new ServerSocket(12345); 
      while (true) { 
       Socket client = server.accept(); 

       // send message 
       OutputStream outputStream = client.getOutputStream(); 
       String message = "Hello Android! - Send from Server."; 
       outputStream.write(message.getBytes()); 

       // THIS DONT WORK FOR SOME REASONS read message 
       String response = ""; 
//    InputStream inputStream = client.getInputStream(); 
//    response = Utils.inputStreamToString(inputStream); 


       // notify ServerService 
       Intent intent = new Intent(Messenger.ACTION); 
       intent.putExtra("action", Messenger.SERVER_NEW_CLIENT_CONNECTED); 
       intent.putExtra("message", "Message: " + response); 
       publishProgress(intent); 

       client.close(); 
      } 
      server.close(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    @Override 
    protected void onProgressUpdate(Intent... value) { 
     if (value.length == 0) 
      return; 
     Intent data = value[0]; 
     context.sendBroadcast(data); 
    } 

} 

Le bloc dans lequel je lis le message de la socket est mis en commentaire. Si je ne commente pas, le socket client ne peut pas établir une connexion au serveur. Quel peut être le problème?ServerSocket envoie un message au client

Répondre

0

Y at-il une erreur imprimée sur la console?

Je suis aussi un débutant mais peut-être la chose suivante pourrait fonctionner:

DataIntputStream input = new DataInputStream(client.getInputStream()) ; 
byte[] b = new byte[1024] 
input.read(b) ; 
String inputString = new String(b) ; 
+0

Il n'y a pas d'erreurs dans la console et logcat. Votre méthode n'a pas beaucoup de sens pour moi mais je vais l'essayer. –

+0

C'est une méthode que j'utilise pour mon serveur-client et cela fonctionne. – tb96

Questions connexes