java - 循环读取套接字

标签 java c sockets network-programming

我正在编写套接字客户端-服务器程序。客户端在java中,服务器在C中。 我想从服务器中的文件中读取并逐行写入客户端。 客户端片段:

while(!(answer = input.readLine()).equals("end")) {
        System.out.println(answer);
    }

服务器:

char* line;
size_t len = 0;
ssize_t read;
FILE* out;
while((read = getline(&line, &len, out))!=-1){
    write(fd, line, read);
}
write(fd, "end", 3);

我开始输出文件中的每一行,但它永远不会退出循环。
我想做什么?
当客户端连接服务器读取行时,将其写入客户端,现在客户端可以将新行添加到文件(其他客户端将读取)

任何人都知道我该如何解决它?

最佳答案

C read() 在流的末尾返回零,而您并未对其进行测试。

Java readLine() 在流结束时返回 null,您也没有对此进行测试。

关于java - 循环读取套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41647557/

相关文章:

java - MongoDB Java Driver 何时建立连接?

c - 汇编二维数组为什么地址相差相同的数字

c - C语言中如何存储负 float

c - 如何强制部分写入来测试网络服务器

java - 如何使用 Java 查询数据存储以获取子对象并比较它们的属性?

java - TCP网关Spring集成视频教程

java - 从 fxml 加载器访问 fxml Controller 的方法

c - free() 会处理指向 C 中数组的第二个指针吗?

php - 如何检测PHP中的封闭套接字(FIN标志)?

c# - 验证套接字是否打开的可靠方法是什么?