У меня проблема с получением файлов.
Есть клиент, который отправляет файлы, и сервер, написанный на 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 p == 0 кажется недоступной для клиента (написано на C #), но netcat правильно отправляет файл.
Зачем?
Я должен изменить код сервера или клиента в C #?
Почему оператор IF недоступен и зацикливается в функции чтения для ожидания данных?