network.rs - P2P Protocol
TCP Server Implementation
// src/network.rs (lines 7-25)
pub async fn start_tcp_server(port: u16, blockchain: Arc<Mutex<Vec<Block>>>) -> anyhow::Result<()> {
let listener = TcpListener::bind(format!("0.0.0.0:{}", port)).await?;
println!("TCP P2P server listening on port {}", port);
loop {
let (socket, addr) = listener.accept().await?;
println!("New TCP connection from {}", addr);
let blockchain_clone = Arc::clone(&blockchain);
tokio::spawn(async move {
if let Err(e) = handle_connection(socket, blockchain_clone).await {
eprintln!("Connection error with {}: {}", addr, e);
}
});
}
}Connection Protocol
Message Format
Bidirectional Communication
Peer Connection Management
Outbound Connection Establishment
Connection Lifecycle
Phase
Operation
Purpose
Message Types and Protocols
Blockchain Synchronization
Transaction Broadcasting
Integration with HTTP Interface
Protocol Comparison
Feature
TCP P2P
HTTP Interface
Dual Protocol Benefits
Error Handling and Resilience
Connection Failure Recovery
Message Validation
Radio Environment Considerations
TCP Challenges in Radio Networks
Optimization Strategies
Performance and Scalability
Concurrent Connection Handling
Memory Management
Future Enhancements
Planned Network Features
Radio-Specific Protocols
Last updated