client/serveur pour envoyer un fichier coincé quelque part

J'ai implémenté un client/serveur pour envoyer des fichiers. Quand il n'y a plus de messages échangés après l'envoi du fichier, le code fonctionne parfaitement, mais si le client envoie une chaîne au serveur directement après le code de réception, le client et le serveur cessent de faire quoi que ce soit et le fichier n'est pas envoyé. comme s'ils étaient tous les deux coincés dans une impasse mais je ne suis pas vraiment sûr:

Voici le code pour envoyer le fichier sans rien envoyer après, ce qui fonctionne: Client

String filename;
BufferedReader UIn = new BufferedReader(new InputStreamReader(System.in));
Socket peer = new Socket("localhost",9999);
System.out.print("Enter the file name to download :");
filename= UIn.readLine();

///////////////////////////////

DataOutputStream OutToServer;
OutToServer = new DataOutputStream(peer.getOutputStream());
OutToServer.writeBytes(filename+"\n");

FileOutputStream fos = new FileOutputStream(new File("D:/new.txt"));
BufferedOutputStream  out = new BufferedOutputStream(fos);
InputStream in = peer.getInputStream();
buffer = new byte[1024];

while((count=in.read(buffer))>0)
{
  fos.write(buffer, 0, count);
  System.out.println(buffer);
}

fos.close();
System.out.println("done");

Serveur:

ServerSocket server =null; 
try {
  server = new ServerSocket(9999);
  while(true)
  {
    client= server.accept();
    //System.out.println("Connection accepted");
    BufferedReader inFromClient = new BufferedReader(new InputStreamReader(client.getInputStream()));
    DataOutputStream outToclient =new DataOutputStream(client.getOutputStream());
    String request=inFromClient.readLine();
    file = new File(request);

    if (file.exists())
    {
      OutputStream out = client.getOutputStream();
      BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));

      while((count =in.read(buffer)) >0)
      {
        out.write(buffer,0,count);
        out.flush();
      }
    }

   //System.out.println(request);
   //outToclient.writeBytes("alaa\n");

  }
} catch (IOException ex) {
  Logger.getLogger(ServerWork.class.getName()).log(Level.SEVERE, null, ex);
}

Mais si j'essaie d'envoyer quelque chose après la boucle entre le client et le serveur, cela ne fonctionne plus. Est-ce parce que j'utilise readLine() et writeBytes() ?

0
quelle!!!! @Makky
ajouté l'auteur Alaa, source
vous n'êtes pas censé plaisanter ici!
ajouté l'auteur Alaa, source

1 Réponses

outToclient.writeBytes("alaa\n");
outToclient.flush();
0
ajouté
maintenant si j'utilise DataOutputStream des deux côtés, le problème sera résolu? et merci beaucoup de m'avoir aidé à comprendre le problème en premier lieu, il est apprécié
ajouté l'auteur Alaa, source
@Alaa côté client, vous utilisez un InputStream, et non un DataInputStream. Ainsi, vous ne profitez pas de l'utilisation de la méthode writeBytes de DataOutputStream côté serveur. Vous pourriez alors essayer de trouver un autre moyen d'envoyer le message supplémentaire, en utilisant simplement le OutputStream.
ajouté l'auteur Setilă, source