2017-09-21 2 views
3

Ich versuche, eine Zeichenfolge von meinem c-Client an einen Java-Server zu senden, nach dem der Server eine Textdatei an den Client sendet.Senden einer Zeichenfolge von C-Client an Java-Server

Dies ist der Teil des Client-Codes, der die Zeichenfolge sendet.

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

Und dies ist der Server-Teil von Java-Code:

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"); 

Nun, da ich überprüft haben, ob ich das Teil in dem Server-Code zu entfernen, wo er versucht, die Zeichenfolge von c-Client zu lesen, die Der Rest des Codes funktioniert einwandfrei und die Datei wird übertragen. Wenn Sie jedoch den String-Code nicht kommentieren, warten sowohl der Server als auch der Client weiter.

Ich werde dankbar sein, wenn jemand dieses Problem für mich löst.

P.S. Ich weiß, dass diese Frage schon einmal gestellt wurde, aber das hat mir nicht geholfen, also habe ich einen neuen Thread gestartet.

+1

vielleicht haben Sie eine neue Zeile zu Ihrer Nachricht hinzufügen sollten? Ich würde einen Anruf wie 'br.readline()' erwarten, um bis zum nächsten Zeilenumbruch zu lesen – Ronald

+0

ja, das ist genau das, was ich verpasst habe – KulaDamian

Antwort

8

br.readLine() möchte eine Zeile lesen. Der Client sendet niemals eine neue Zeile, so dass der Server auf eine neue Zeile wartet ... für immer!

eine neue Zeile in den vom Client gesendeten Befehl hinzufügen:

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

Das hat den Trick gemacht, danke! – KulaDamian

Verwandte Themen