-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathprotocol.go
More file actions
39 lines (31 loc) · 790 Bytes
/
protocol.go
File metadata and controls
39 lines (31 loc) · 790 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package main
// p2p Protocol definition for sending and receiving a message
import (
"fmt"
"github.com/ethereum/go-ethereum/p2p"
)
var (
proto = p2p.Protocol{
Name: "ping",
Version: 1,
Length: 1,
Run: func(p *p2p.Peer, rw p2p.MsgReadWriter) error {
message := "ping"
// Sending the message to connected peer
err := p2p.Send(rw, 0, message)
if err != nil {
return fmt.Errorf("Send message fail: %v", err)
}
fmt.Println("sending message", message)
// Receiving the message from connected peer
received, err := rw.ReadMsg()
if err != nil {
return fmt.Errorf("Receive message fail: %v", err)
}
var myMessage string
err = received.Decode(&myMessage)
fmt.Println("received message", string(myMessage))
return nil
},
}
)