有没有一种方法可以通过UDP发送大文件

时间:2019-10-15 06:50:57

标签: python udp

我刚刚开始使用Python学习网络编程。当前正在处理作业,该作业请求使用UDP将文件从客户端发送到服务器,然后再发送回客户端。但是,我的代码可以在较小的文件上正常工作,但是在较大的文件上却有问题。

我找到了一种使用import os找出文件大小的方法。因此,我正在考虑将文件拆分成大于UDP可以发送的最大大小的文件,并一一发送。

但是我不确定UDP可以发送的最大大小,并且在发送时如何将所有拆分部分重新组合在一起?

// Client side

import os
from socket import *

//Set up information of server
server_name = '127.0.0.1'  # 127.0.0.1 is local IP
server_port = 12000
clientSocket = socket(AF_INET, SOCK_DGRAM)

//Request the location of file
foundFile = 0
while foundFile == 0:
    print("========================================")
    print("[Please input the path of the file you wish to transmit.]")
    path = input("[Path]: ")
    print("========================================")

if os.path.isfile(path):
    print("[File found.]")

    fileSize = os.path.getsize(path)
    print("[File size is : ", fileSize, 'bits]')

    print("[Starting file transmission.]")
    foundFile = 1
else:
    print("[File not found.] Please re-enter the correct path.")
    print("[Please choose only on file, or enter the correct path.]")
    foundFile = 0

fileOpen = open(path, 'rb')
file = fileOpen.read()
clientSocket.sendto(file, (server_name, server_port))

因此,如果文件很小,则应将其发送到服务器端。稍后在代码中,服务器端将把相同的内容发回并在桌面上创建副本。

但是,如果文件太大,则会出现错误:     clientSocket.sendto(文件,(服务器名称,服务器端口))     OSError:[WinError 10040]

0 个答案:

没有答案