Network
節點:如何保持持久的傳入連接?
我編寫了一個簡單的腳本“節點”,它將連接到我電腦上執行的本地節點。
我可以看到它使用以下方式連接:
$ 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為我指明了正確的方向。