Как читать бинарный файл? - PullRequest
1 голос
/ 11 февраля 2011

Я пытаюсь отправить файл между клиентом и сервером в моей домашней сети. Я просто хочу проверить с простым файлом, client.txt.

Клиентская программа должна прочитать X байтов и отправить ее через созданный мною сокет tcp, но я не могу понять, как выполнить отправляющую часть:

f = open("client.txt", "rb")
while 1:
// should read X bytes and send to the socket

Я думаю, что мне нужно проверить, действительны ли данные, которые я хочу отправить, если файл, например, меньше, чем сумма (например, 1024), которую я отправляю в каждой партии .... таким образом?

Ответы [ 2 ]

4 голосов
/ 11 февраля 2011

Так как вы упомянули, что у вас проблемы с настройкой серверной части, я вычеркну это из документации по Python и слегка отредактирую:

import socket

HOST = ''
PORT = 50007

s = socket.socket()
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()

f = open("client.txt", "rb")
while 1:
    data = f.read(1024)
    if not data: break
    conn.send(data)
conn.close()

Соответствующий документ можно найти здесь

1 голос
/ 11 февраля 2011

read() принимает необязательный параметр, который определяет количество байтов для чтения.

Документация

Чтобы прочитать содержимое файла, позвоните f.read (размер), который читает некоторые количество данных и возвращает его в виде строка. размер необязательный числовой аргумент. Когда размер опущен или отрицательно, все содержимое файл будет прочитан и возвращен; его ваша проблема, если файл в два раза большой, как память вашей машины. В противном случае считывается не более байтов размера и вернулся. Если конец файла был достигнут, f.read () вернется пустая строка ("").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...