import socket
CHUNK_SIZE = 1024
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('192.168.13.122', 80))
with open("my_audio.wav", "rb") as f:
eof = False
while True:
chunk = f.read(CHUNK_SIZE)
if chunk:
if len(chunk) < CHUNK_SIZE:
eof = True
sock.sendall(chunk + b"--audio")
else:
break
if eof:
break
а если у Вас магнет ссылка?
Список нод из торрент-файла, это когда Вы (прога) с трекера ноды берете по хэшу файла.
Вам трекер отдает готовых пиров. Вы их не ищете в DHT. Это не trackerless.
1. Делаем запрос в router.utorrent.com: 6881 - получаем стартовый список нод. Насколько я понял инфохэши мы не запрашиваем, т.к. в данном случае единого трекера нет.
a trackerless torrent has a "nodes" key. This key should be set to the K closest nodes in the torrent generating client's routing table. Alternatively, the key could be set to a known good node such as one operated by the person generating the torrent. Please do not automatically add "router.bittorrent.com" to torrent files or automatically add this node to clients routing tables.
2. Записываем ноды в routing table.
Upon inserting the first node into its routing table and when starting up thereafter, the node should attempt to find the closest nodes in the DHT to itself. It does this by issuing find_node messages to closer and closer nodes until it cannot find any closer.
3. Используя routing table, обзваниваем ноды на предмет поиска инфохэша файла (get_peers) или анонсируем свой инфохэш (announce_peer)
Запрос 'ping' делаем только в router.utorrent.com: 6881 или по всем нодам из routing table
Запрос 'ping' в данном случае делаем 1 раз в n секунд - показываем, что наша нода жива?