/ test-server / main.go
main.go
 1  package main
 2  
 3  import (
 4  	"fmt"
 5  	"log"
 6  	"os"
 7  	"os/signal"
 8  	"syscall"
 9  
10  	"github.com/libp2p/go-libp2p"
11  	"github.com/libp2p/go-libp2p/core/network"
12  )
13  
14  func main() {
15  	// Create a libp2p host with QUIC transport on port 4001
16  	host, err := libp2p.New(
17  		libp2p.ListenAddrStrings(
18  			"/ip4/0.0.0.0/udp/4001/quic-v1",
19  		),
20  	)
21  	if err != nil {
22  		log.Fatalf("Failed to create host: %v", err)
23  	}
24  	defer host.Close()
25  
26  	// Print the host's addresses
27  	fmt.Println("libp2p QUIC test server running")
28  	fmt.Printf("Peer ID: %s\n", host.ID())
29  	for _, addr := range host.Addrs() {
30  		fmt.Printf("Listening on: %s/p2p/%s\n", addr, host.ID())
31  	}
32  
33  	// Set a connection handler to log incoming connections
34  	host.Network().Notify(&network.NotifyBundle{
35  		ConnectedF: func(n network.Network, conn network.Conn) {
36  			fmt.Printf("New connection from: %s\n", conn.RemotePeer())
37  			fmt.Printf("  Remote addr: %s\n", conn.RemoteMultiaddr())
38  			fmt.Printf("  Local addr: %s\n", conn.LocalMultiaddr())
39  		},
40  		DisconnectedF: func(n network.Network, conn network.Conn) {
41  			fmt.Printf("Disconnected: %s\n", conn.RemotePeer())
42  		},
43  	})
44  
45  	// Also try to add a raw UDP listener for debugging
46  	fmt.Println("\nWaiting for connections on port 4001...")
47  
48  	// Wait for interrupt
49  	c := make(chan os.Signal, 1)
50  	signal.Notify(c, os.Interrupt, syscall.SIGTERM)
51  	<-c
52  	fmt.Println("\nShutting down...")
53  }