2017-09-21 131 views
3

我想從我的c客戶端發送一個字符串到Java服務器,之後服務器將文本文件發送到客戶端。發送從C客戶端到Java服務器的字符串

這是發送字符串的客戶端代碼的一部分。

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

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

現在我已經驗證了,如果我刪除了部分在它試圖從C客戶端讀取字符串服務器的代碼中,其餘的代碼工作正常,文件被傳輸。但如果不評論字符串接收代碼,服務器和客戶端都在等待。

如果有人爲我解決這個問題,我將不勝感激。

P.S.我知道這個問題以前已經被問過,但是這並沒有幫助我,所以我開始了一個新的線程。

+1

也許你應該添加一個新行到郵件?我希望像'br.readline()'這樣的電話能夠讀取到下一個換行 – Ronald

+0

是的,這正是我錯過的 – KulaDamian

回答

8

br.readLine()想要讀一行。客戶端永遠不會發送換行符,所以服務器正在等待換行符......永遠!

添加一個新行通過客戶端發送的命令:

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

這就是訣竅,謝謝! – KulaDamian

相關問題