2017-09-21 2 views
3

J'essaie d'envoyer une chaîne de mon client c vers un serveur Java, après quoi le serveur envoie un fichier texte au client.Envoyer une chaîne du client C au serveur Java

C'est la partie du code client qui envoie la chaîne.

int n = write(sock_fd,"Ready",5); 
if (n < 0) 
    printf("ERROR writing to socket\n"); 
recv_file(sock_fd, filename); 

Et ceci est la partie serveur de code Java:

InputStream is = socket.getInputStream(); 
InputStreamReader isr = new InputStreamReader(is); 
BufferedReader br = new BufferedReader(isr); 
String message = br.readLine(); 
System.out.println("Message received from client is " + message); 
String FILENAME = "data.txt"; 
sendFile(socket, "data.txt"); 

Maintenant, je l'ai vérifié que si je retire la partie dans le code du serveur où il tente de lire la chaîne de c client, reste du code fonctionne bien et le fichier est transmis. Mais si vous ne commentez pas le code de réception de chaîne, le serveur et le client attendent toujours.

Je serais reconnaissant si quelqu'un résout ce problème pour moi.

P.S. Je sais que cette question a déjà été posée mais cela ne m'a pas aidé, alors j'ai commencé un nouveau sujet.

+1

peut-être vous devriez ajouter une nouvelle ligne à votre message? Je m'attendrais à un appel comme 'br.readline()' pour lire la nouvelle ligne suivante – Ronald

+0

oui, c'est exactement ce que j'ai raté – KulaDamian

Répondre

8

br.readLine() veut lire une ligne. Le client n'envoie jamais de saut de ligne, donc le serveur attend une nouvelle ligne ... pour toujours!

Ajouter une nouvelle ligne à la commande envoyée par le client:

int n = write(sock_fd,"Ready\n", 6); 
+2

Cela a fait l'affaire, merci! – KulaDamian