Network

節點:如何保持持久的傳入連接?

  • November 21, 2016

我編寫了一個簡單的腳本“節點”,它將連接到我電腦上執行的本地節點。

我可以看到它使用以下方式連接:

$ bitcoin-cli getpeerinfo

{
   "id": 27,
   "addr": "127.0.0.1:37992",
   "addrlocal": "127.0.0.1:18333",
   "services": "0000000000000001",
   "relaytxes": true,
   "lastsend": 1479746037,
   "lastrecv": 1479746037,
   "bytessent": 325460,
   "bytesrecv": 6007,
   "conntime": 1479745618,
   "timeoffset": 0,
   "pingwait": 419.673504,
   "version": 60002,
   "subver": "",
   "inbound": true,
   "startingheight": 0,
   "banscore": 0,
   "synced_headers": -1,
   "synced_blocks": -1,
   "inflight": [
   ],
   "whitelisted": false,
   "bytessent_per_msg": {
     "block": 236393,
     "getheaders": 1053,
     "inv": 5898,
     "ping": 32,
     "tx": 81934,
     "verack": 24,
     "version": 126
   },
   "bytesrecv_per_msg": {
     "getdata": 5898,
     "version": 109
   }
 }
}

但是,該腳本最終將失去與我的本地節點的連接並停止接收消息。這通常會在一小時內發生。

  • 是什麼導致節點斷開與傳入節點的連接?
  • 是否可以使我的本地節點允許永久傳入連接(來自我的本地腳本)?

編輯:我addnode=127.0.0.1在我的bitcoin.conf中嘗試過,但如果連接斷開,它對重新連接沒有幫助。

**解決方案:**節點一直在發送我的腳本ping消息,但我的腳本沒有響應pong消息。

發送 ping 消息主要是為了確認 TCP/IP 連接仍然有效。假定傳輸中的錯誤是關閉的連接,並且該地址作為目前對等方被刪除。<https://en.bitcoin.it/wiki/Protocol_documentation#ping>

因此,我的腳本“節點”似乎沒有響應,因此本地節點會斷開連接。


感謝Pieter Wuille為我指明了正確的方向。

引用自:https://bitcoin.stackexchange.com/questions/49766