/ test-server / dial-test.go
dial-test.go
 1  package main
 2  
 3  import (
 4  	"context"
 5  	"fmt"
 6  	"log"
 7  	"os"
 8  	"time"
 9  
10  	"github.com/libp2p/go-libp2p"
11  	"github.com/libp2p/go-libp2p/core/peer"
12  	"github.com/multiformats/go-multiaddr"
13  )
14  
15  func main() {
16  	if len(os.Args) < 2 {
17  		log.Fatal("Usage: dial-test <peer-id>")
18  	}
19  	peerIDStr := os.Args[1]
20  
21  	host, err := libp2p.New(
22  		libp2p.ListenAddrStrings("/ip4/0.0.0.0/udp/0/quic-v1"),
23  	)
24  	if err != nil {
25  		log.Fatal(err)
26  	}
27  	defer host.Close()
28  
29  	fmt.Printf("Client: %s\n", host.ID())
30  
31  	serverPeerID, err := peer.Decode(peerIDStr)
32  	if err != nil {
33  		log.Fatalf("Invalid peer ID: %v", err)
34  	}
35  
36  	serverAddr, _ := multiaddr.NewMultiaddr("/ip4/127.0.0.1/udp/4001/quic-v1")
37  	serverInfo := peer.AddrInfo{
38  		ID:    serverPeerID,
39  		Addrs: []multiaddr.Multiaddr{serverAddr},
40  	}
41  
42  	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
43  	defer cancel()
44  
45  	fmt.Println("Connecting...")
46  	err = host.Connect(ctx, serverInfo)
47  	if err != nil {
48  		fmt.Printf("Error: %v\n", err)
49  	} else {
50  		fmt.Println("Connected successfully!")
51  	}
52  }