2017-03-03 56 views
0

我正在從BitTorrent跟蹤器獲取IP地址和端口號,用於特定的種子文件。它代表了BitTorrent網絡上的同伴。我正嘗試使用此代碼連接到對等端。連接總是超時(getsockopt:操作超時)。我想我在這裏錯過了一些非常基本的東西,因爲我在Python中嘗試了相同的代碼,結果完全相同,操作超時。它發生在每個對等IP地址上。如何調試以下Go代碼,該代碼嘗試建立到IP地址和端口的TCP連接?

我下載了這個bittorrent客戶端 - https://github.com/jtakkala/tulva 它能夠使用這種類型的代碼(Line 245,peer.go)從我的系統連接到對等端。我也能夠使用類似的代碼連接到在localhost上運行的tcp服務器。

編輯細節JimB的評論和肯尼格蘭特的回答後

package main 

import (
    "fmt" 
    "net" 
) 

func main() { 
    raddr := net.TCPAddr{IP: []byte{}/*This byte slice contains the IP*/, Port: int(/*Port number here*/)} 
    conn, err := net.DialTCP("tcp4", nil, &raddr) 
    if err != nil { 
     fmt.Println("Error while connecting", err) 
     return 
    } 
    fmt.Println("Connected to ", raddr, conn) 
} 
+0

端口根本不接受連接。你想調試什麼?你的TCP地址表示很奇怪 - 你期望領先的0和255是幹什麼的? – JimB

+0

@JimB我使用的端口爲例,因爲我不想使用佔位符。但這是誤導,所以我改變了代碼示例。 –

+0

IP和端口並不真正相關 - 無論您可以連接還是無法連接,所以我不確定您想在此處進行調試。 – JimB

回答

1

與已知良好地址試試吧,你會看到你的代碼工作正常(與4字節的IPv4地址這麼說)。 Bittorrent同行是短暫的,所以它可能只是消失,如果測試你應該使用你自己的IP,你知道是穩定的。如果你想連接到187.41.59.238:10442,正如jimb所說,它不可用。如果你想連接到187.41.59.238:10442,那麼它就不可用了。對於IP,請參閱文檔:

https://sourcegraph.com/github.com/golang/[email protected]/-/blob/src/net/ip.go#L32:6-32:8

+0

感謝您的回覆。我實際上只是使用該地址作爲例子,我希望代碼在語法上是正確的。我現在意識到這是誤導性的,並且已經更新了這個問題。我收到了來自跟蹤器的同行列表,並試圖聯繫他們,並在我退出同行時重複此過程。每個對等連接都會超時。我會採取你的建議,並嘗試這個代碼非本地IP:端口組合,我知道是穩定的。 –

+1

再次感謝您向我介紹sourcegraph,它看起來像一個非常有用的工具。 –

+0

不客氣。 –