1 changed files with 41 additions and 0 deletions
@ -0,0 +1,41 @@ |
|||
extern crate bitcoin; |
|||
extern crate electrs; |
|||
extern crate error_chain; |
|||
|
|||
use bitcoin::network::constants::Network; |
|||
use bitcoin::network::message::NetworkMessage; |
|||
use bitcoin::network::socket::Socket; |
|||
|
|||
use electrs::errors::*; |
|||
|
|||
fn run() -> Result<()> { |
|||
// Open socket
|
|||
let mut sock = Socket::new(Network::Bitcoin); |
|||
sock.connect("127.0.0.1", 8333) |
|||
.chain_err(|| "failed to connect to node")?; |
|||
|
|||
let mut outgoing = vec![sock.version_message(0).unwrap()]; |
|||
loop { |
|||
for msg in outgoing.split_off(0) { |
|||
eprintln!("send {:?}", msg); |
|||
sock.send_message(msg.clone()) |
|||
.chain_err(|| format!("failed to send {:?}", msg))?; |
|||
} |
|||
// Receive new message
|
|||
let msg = sock |
|||
.receive_message() |
|||
.chain_err(|| "failed to receive p2p message")?; |
|||
|
|||
match msg { |
|||
NetworkMessage::Alert(_) => continue, // deprecated
|
|||
NetworkMessage::Version(_) => outgoing.push(NetworkMessage::Verack), |
|||
NetworkMessage::Ping(nonce) => outgoing.push(NetworkMessage::Pong(nonce)), |
|||
_ => (), |
|||
}; |
|||
eprintln!("recv {:?}", msg); |
|||
} |
|||
} |
|||
|
|||
fn main() { |
|||
run().expect("p2p listener failed"); |
|||
} |
Loading…
Reference in new issue