Я только начал изучать сетевое программирование на Python. В настоящее время работаю над домашней работой, которая запрашивает использование UDP для отправки файлов с клиента на сервер, а затем обратно на клиент. Тем не менее, мои коды хорошо работают с небольшими файлами, но были проблемы с большими файлами.
Я нашел способ использования os 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 (file,(имя_сервера, порт_сервера)) Ошибка OSE: [WinError 10040]