我试图从我的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。我知道之前已经问过这个问题,但这对我没有帮助,所以我开始了一个新的主题。
答案 0 :(得分:8)
br.readLine()
想要读一行。客户端永远不会发送换行符,因此服务器正在等待换行符......永远!
为客户端发送的命令添加换行符:
int n = write(sock_fd,"Ready\n", 6);