2017-02-08 2 views
0

J'ai créé un socket en Java.
Cette socket se connecte à un serveur. Lorsque je lance mon programme, le serveur envoie un message indiquant que mon socket est connecté à l'AEOS. Lorsque j'essaie de me connecter au serveur pour envoyer des commandes, le serveur répond à nouveau avec: status connected to AEOS versionLe socket Java n'envoie qu'un seul message

Ce n'est pas le message que j'attends, normalement mon serveur doit envoyer une "réponse true".

Pouvez-vous m'aider?

Merci.

import java.io.*; 
import java.net.*; 

class TCPClient { 
    public static void main(String argv[]) throws Exception { 
     while(true) { 
      String sentence;    
      String modifiedSentence;  

      Socket clientSocket = new Socket("127.0.0.1", 1201); 

      BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); 
      DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());   
      BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 

      sentence = inFromUser.readLine(); 
      outToServer.writeBytes(sentence + '\n'); 
      modifiedSentence = inFromServer.readLine(); 
      System.out.println("FROM SERVER: " + modifiedSentence); 

      clientSocket.close(); 
     } 
    } 
} 

output socket

+0

Veuillez ne pas poster des captures d'écran de la sortie console. Vous devriez copier le texte et le coller dans un bloc de code, en [éditant] votre question. – SiHa

Répondre

0

Pourquoi vous essayez de ne pas lire tout ce serveur avait envoyé? Aussi, besoin d'ouvrir un nouveau Socket à chaque fois? Cela dépend de votre implémentation. Essayez ceci:

public static void main(String[] args) { 

     Socket clientSocket = null; 

     try { 
      clientSocket = new Socket("127.0.0.1", 1201); 

      BufferedReader inFromUser = new BufferedReader(
        new InputStreamReader(System.in)); 
      DataOutputStream outToServer = new DataOutputStream(
        clientSocket.getOutputStream()); 
      BufferedReader inFromServer = new BufferedReader(
        new InputStreamReader(clientSocket.getInputStream())); 

      String initialMessageFromServer = null; 

      while ((initialMessageFromServer = inFromServer 
        .readLine()) != null) { 
       System.out.println(initialMessageFromServer); 
      } 

      while (true) { 
       String sentence = inFromUser.readLine(); 
       outToServer.writeBytes(sentence + '\n'); 

       StringBuilder modifiedSentence = new StringBuilder(); 
       String responseFromServer = null; 

       while ((responseFromServer = inFromServer.readLine()) != null) { 
        modifiedSentence.append(responseFromServer); 
        modifiedSentence.append('\n'); 
       } 

       System.out 
         .println("FROM SERVER: " + modifiedSentence.toString()); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      if (clientSocket != null) { 
       try { 
        clientSocket.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    } 
+0

merci pour la réponse rapide. J'ai essayé le code mais maintenant il se connecte avec le serveur mais quand j'envoie une commande alors notting se produit .. Normalement après la connexion avec le serveur je dois entrer mon login et mot de passe. Quand j'entre cette réponse de mon serveur avec un texte. Cela n'arrive pas .. – metalgastje