2017-09-21 129 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

相关问题