Сокеты C: перенаправление буфера в другой файл - PullRequest
1 голос
/ 02 апреля 2011

Если раньше об этом спрашивали в другой редакции, прошу прощения.

Вот моя проблема. У меня есть клиентские отношения с сервером TCP в Linux, и в определенной части моего кода сервер будет записывать (), скажем, 512 байт) файлового буфера клиенту. Я хочу, чтобы клиент восстановил файл на другой стороне, перенаправив части буфера наружу в уже созданный файл (имитируя эффект копирования). Я рассматривал среднего человека, который переводит буфер в символы, а затем использует fprintf и т. Д., Чтобы передать информацию в файл (это единственный способ, который я могу представить). Однако эта идея не работает при работе с двоичными файлами, так как ascii испортит двоичный файл.

Есть ли способ перенаправить указатель буфера файла в другой файл? Спасибо!

1 Ответ

4 голосов
/ 02 апреля 2011

Считать буфер из сокета, используя recv, и записать его в файл, используя fwrite. Когда вы открываете локальный файл, прежде чем обязательно использовать "wb" в качестве режима.

Редактировать: Вот эскиз общей идеи:

socket input = open_socket(server, server_port);   
FILE *file = fopen("localfile.bin", "wb");
char buffer[some_size];

do { 
    size_t received = recv(input, some_size);
    fwrite(buffer, received, 1, file);
} while (received != 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...