Я написал простой скрипт на 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)