2017-06-06 111 views
1

我正在嘗試構建一個BitTorrent客戶端。我需要使UDP請求連接到各種跟蹤器。爲此,我使用net包,這樣做:無法發出UDP請求

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

我得到一個錯誤「在地址太多冒號」。

如果我試試這個:

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

我得到一個 「節點名,也不servname提供的,或不知道」 的錯誤。

我該如何解決這個問題?

+4

撥號需要一個IP地址,而不是一個URL。路徑部分不是地址的一部分。 – JimB

回答

2

所以你需要將它發送到IP地址和port,由.torrent圖元文件(announce字段)提供。

而且一旦你打開net.Conn可以conn.Write()插座上,同樣conn.Read()

所以你只是得到我:

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

HTTP連接,是您使用/announce端點,但不適用於UDP

specs說明要讀取和寫入多少個字節(它首先是固定的,但後來是動態的當涉及到閱讀對等列表)。我發現這個鏈接,而最有用:https://github.com/naim94a/udpt/wiki/The-BitTorrent-UDP-tracker-protocol