从C客户端发送字符串到Java服务器

3
我正在尝试从我的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客户端读取字符串的部分,剩余的代码可以正常工作并传输文件。但是,如果不注释接收字符串的代码,服务器和客户端都会一直等待。
如果有人能解决这个问题,我将非常感激。
附言:我知道这个问题之前已经被问过了,但那并没有帮助我,所以我发起了一个新的主题。

1
也许你应该在你的消息中添加一个新行?我期望像br.readline()这样的调用可以读取到下一个换行符。 - Ronald
是的,那正是我所错过的。 - KulaDamian
1个回答

8

br.readLine()要读取一行内容。客户端没有发送新行(即回车换行符),因此服务器会一直等待新行...直到永远!

在客户端发送的命令末尾添加一个新行:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接