Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Simple UDP sender
- */
- import socket
- client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP
- client.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
- client.bind(("", 37020))
- while True:
- data, addr = sock.recvfrom(1024)
- print("received message: %s"%data)
- /**
- * Updated UDP sender
- * Added headers
- */
- import socket
- # Пакет сообщает о новом файле
- # Структура пакета:
- # Magic (4 байта)
- # FileSize (4 байта) - размер файла в блоках
- MAGIC_NEW = b'\xa1\xdc\xda\xae'
- # Пакет с данными о файле
- # Структура пакета:
- # Magic (4 байта)
- # Number (4 байта) - номер пакета от 0 до FileSize
- MAGIC_TRANSFER = b'\xa1\xdc\xda\xad'
- # Пакет, который приходит после передачи файла
- # Структура пакета:
- # Magic (4 байта)
- MAGIC_FINISH = b'\xa1\xdc\xda\xad'
- # Создание сокета
- client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP
- client.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
- client.bind(("", 37021))
- fileBlocks = []
- countBlocks = 0
- waitNewFile = True
- while waitNewFile:
- data, addr = client.recvfrom(1024)
- magic = data[:4]
- data = data[4:]
- countBlocks = int.from_bytes(data[:4], 'big')
- if (magic == MAGIC_NEW):
- needWaitFile = false
- print("New file!")
- print("Size: ", countBlocks, " blocks!")
- while(len(fileBlocks) != countBlocks):
- data, addr = client.recvfrom(1024)
- magic = data[:4]
- if (magic == MAGIC_TRANSFER):
- data = data[4:]
- number = int.from_bytes(data[:4], 'big')
- data = data[4:]
- length = int.from_bytes(data[:4], 'big')
- data = data[4:]
- data = data[:length].decode()
- file[i] = data
- if (magic == MAGIC_FINISH):
- print("Server off transmisiion")
Advertisement