我在接收文件时遇到问题。 有一个客户端发送文件和用C / C ++编写的服务器。
这是我完全使用netcat的简单代码:
std::ofstream file;
file.open("data.bin", std::ios::out | std::ios::binary);
assert(file.is_open());
char buffer[1024];
while (1) {
std::cout << "Writing data..." << std::endl;
ssize_t p = read(fd, buffer, sizeof(buffer));
std::cout << "Print p " << p << std::endl;
assert(p != -1);
if (p == 0)
{
std::cout << "End of file." << std::endl;
break;
}
std::cout << "Print buffer " << buffer << std::endl;
file.write(buffer, p);
}
file.close();
}
但不是我的客户。 IF statemant p == 0似乎无法与客户端(用C#编写),但netcat正确发送文件。 为什么? 我必须在C#中修改服务器代码或客户端? 为什么IF语句不可缓存并在read函数中循环以等待数据?