fork download
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3.  
  4. import socket
  5. import struct
  6. import time
  7.  
  8. IP_ADDRESS = "192.168.1.2"
  9. FILENAME_EXTENSION = '.alac'
  10.  
  11. sock = socket.socket()
  12. sock.connect((IP_ADDRESS, 9090))
  13.  
  14. encoded_filename_extension = FILENAME_EXTENSION.encode("UTF-8") # Кодирование расширения файла
  15. length_of_encoded_filename_extension = len(encoded_filename_extension) # Получение длины расширения файла в байтах
  16. struct_leng_of_encoded_filename_extension = struct.pack('H', length_of_encoded_filename_extension) # Запаковка длины расширения файла
  17. sock.send(struct_leng_of_encoded_filename_extension) # Посылка длины расширения файла
  18.  
  19. if sock.recv(2).decode("UTF-8") == "OK": # Ожидание получение OK
  20. sock.send(struct.pack('{}s'.format(length_of_encoded_filename_extension),
  21. encoded_filename_extension)) # Посылает запакованную строку - расширение файла
  22. if sock.recv(2).decode("UTF-8") == "OK":
  23. pass
  24.  
  25. quantity_of_files = struct.unpack('Q', sock.recv(8))[0] # Распаковывает количество файлов
  26.  
  27. for i in range(quantity_of_files): # Итерации по количеству файлов
  28.  
  29. file_size = struct.unpack('Q', sock.recv(8))[0] # Получает и распаковывает размер файла
  30. sock.send('OK'.encode('UTF-8')) # Посылает OK
  31.  
  32. file_name_size = struct.unpack('H', sock.recv(2))[0] # Получает и распаковывает длину имени
  33. sock.send('OK'.encode('UTF-8')) # Посылает OK
  34.  
  35. file_name = struct.unpack('{}s'.format(file_name_size),
  36. sock.recv(file_name_size))[0].decode("UTF-8") # Получает и распаковывает имя файла
  37. sock.send('OK'.encode('UTF-8')) # Посылает OK
  38.  
  39. open_file = open(file_name, 'wb') # Открывает файл, и записывает туда все данные, получаемые из сокета
  40.  
  41. for i in range(file_size//16384):
  42. open_file.write(sock.recv(16384))
  43. time.sleep(0.0000000000000000000000000001)
  44.  
  45. open_file.write(sock.recv(file_size%16384))
  46. open_file.close()
  47. sock.send('OK'.encode('UTF-8'))
  48.  
  49. print(file_name, 'written')
  50.  
  51. sock.close()
  52. input("Press Enter to exit")
  53.  
  54.  
  55.  
  56.  
  57.  
Runtime error #stdin #stdout #stderr 0.04s 10368KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Traceback (most recent call last):
  File "./prog.py", line 7, in <module>
ImportError: No module named 'constants'