通过套接字流文件内容的Python代码产生不完整的数据

时间:2018-06-26 21:38:03

标签: python sockets

我编写了一个简单的Python脚本,该脚本读取文件并通过套接字流式传输内容。我目前连接到的应用程序只是从套接字读取数据并将其写入文件。但是,接收端的数据不完整。文件的前约150行不会被接收,最后一行也不会被接收。我的Python代码没有发现任何明显的错误,但是如果有人指出我做错了什么,我将不胜感激。如果有另一种方法可以完成此任务,则可能也会有所帮助。谢谢。

编辑:我很确定这是此代码的问题,而不是接收方的问题,因为我有此Python代码的C ++版本,接收端可以正常工作。但是,我不知道这里可能出什么问题。

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)

0 个答案:

没有答案