Каждый раз, когда вы собираетесь переместить двоичные данные из одной системы в другую, нужно помнить о нескольких вещах.
Разные машины по-разному хранят одну и ту же информацию. Это имеет значение как в памяти, так и в сети. Более подробная информация здесь (http://en.wikipedia.org/wiki/Endianness)
Поскольку вы используете python, вы можете немного расслабиться (при условии, что клиент и сервер будут работать в python) и просто использовать cPickle для сериализации ваших данных. Если вам действительно нужен двоичный файл, вам придется освоиться с модулем структуры python (http://docs.python.org/library/struct.html). и научиться упаковывать / распаковывать данные.
Сначала я бы начал с простых серверов с линейным протоколом, пока вы не преодолеете трудности сетевого взаимодействия. Если вы никогда не делали этого раньше, это может очень быстро запутать. Как выдавать команды, как передавать данные, как выполнять синхронизацию при ошибках и т. Д. *
Если вы уже знакомы с основами проектирования протокола клиент-сервер, то попробуйте сначала упаковать и распаковать двоичные структуры на вашем диске. Я также ссылаюсь на RFC HTTP и FTP для таких случаев.
------- РЕДАКТИРОВАТЬ НА ОСНОВЕ КОММЕНТАРИЙ --------
Обычно такого рода действия выполняются путем отправки серверу «заголовка», который содержит контрольную сумму для файла, а также размер файла в байтах. Обратите внимание, что я не имею в виду заголовок HTTP, вы можете настроить его так, как хотите. Цепочка событий должна идти примерно так ...
CLIENT: "UPLOAD acbd18db4cc2f85cedef654fccc4a4d8 253521"
SERVER: "OK"
(server splits the text line to get the command, checksum, and size)
CLIENT: "010101101010101100010101010etc..." (up to 253521 bytes)
(server reasembles all received data into a file, then checksums it to make sure it matches the original)
SERVER: "YEP GOT IT"
CLIENT: "COOL CYA"
Это слишком упрощенно, но я надеюсь, что вы понимаете, о чем я говорю здесь.