2017-06-06 6 views
1

Ich versuche, einen BitTorrent-Client in go zu bauen. Ich muss UDP-Anfragen stellen, um sich mit den verschiedenen Trackern zu verbinden. Dazu verwende ich das net Paket und dies zu tun:Ich kann keine UDP-Anfrage erstellen

net.Dial("udp", "udp://hostname:1337/announce") 

ich ein „zu viele Doppelpunkte in Adresse“ Fehler.

Wenn ich das versuchen:

net.Dial("udp", "hostname:1337/announce") 

ich einen "nodename noch servname zur Verfügung gestellt, oder nicht bekannt" Fehler.

Wie behebe ich das?

+4

Dial nimmt eine IP-Adresse, keine URL. Der Pfadabschnitt ist nicht Teil der Adresse. – JimB

Antwort

2

Also müssen Sie es an die IP-Adresse senden und port wie von dem .torrent Metafile (announce Feld) zur Verfügung gestellt.

Und sobald Sie die net.Conn Sie öffnen können conn.Write() an die Steckdose und in ähnlicher Weise conn.Read()

So haben Sie gerade ich bekommen:

conn, err := net.Dial("udp", announceAddr:Port) 

Wenn mit HTTP verbinden, ja Sie verwenden, um die /announce Endpunkt , aber nicht mit

Die specs erklären, wie viele Bytes zu lesen und zu schreiben (es ist zunächst behoben, aber später dynamisch wenn es darum geht, die Peer-Liste zu lesen). Ich habe diesen Link gefunden, eher, der nützlichste: https://github.com/naim94a/udpt/wiki/The-BitTorrent-UDP-tracker-protocol

Verwandte Themen