Python-код для потоковой передачи содержимого файла через сокет создает неполные данные - PullRequest
0 голосов
/ 27 июня 2018

Я написал простой скрипт на Python, который читает файл и передает содержимое через сокет. Приложение, к которому я подключился, в настоящий момент просто читает данные из сокета и записывает их в файл. Однако данные о принимающей стороне неполные. Первые ~ 150 строк файла не получаются, как и последняя строка. Я не вижу ничего явно неправильного в моем коде Python, но если кто-то может указать на то, что я сделал неправильно, я был бы признателен. Если есть альтернативный метод, который может выполнить эту задачу, он также может быть полезным. Спасибо.

РЕДАКТИРОВАТЬ: Я почти уверен, что это проблема с этим кодом, а не принимающей стороной, потому что у меня есть версия C ++ этого кода Python, с которой приемная сторона работает нормально. Однако я не знаю, что здесь может быть не так.

import socket
import sys
import time

__all__=['Stream_File_to_Socket']

def Stream_File_to_Socket(port,input_file):
    # create socket
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_address = ('localhost',port)


    sock.bind(server_address)
    sock.listen(1)

    # open file and send data
    f = open(input_file,"r")

    while True:
        #print('waiting for a connection')
        connection, client_address = sock.accept()
        if connection.fileno() != -1 :
            break
            #print("no connection!")
            return(-1)

    time.sleep(0.5)
    buffer_size = 1024

    while True:
        data = f.readline()
        if not data:
            connection.send(data)
            break
        connection.send(data)
        time.sleep(0.01)

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