perlin-network / noise

A decentralized P2P networking stack written in Go.
https://godoc.org/github.com/perlin-network/noise
MIT License
1.78k stars 213 forks source link

Client connects but don't see any handling data #285

Open delp opened 4 years ago

delp commented 4 years ago

Can you help me understand why I'm not getting any output after the send?

I have these two programs running in different terminals on the same host.

Listener

func main() {

    if len(os.Args) != 2 {
        panic("ahhh")
    }

    address := os.Args[1]
    port, err := strconv.Atoi(address)
    check(err)
    port16 := uint16(port)

    listener, err := noise.NewNode(noise.WithNodeBindPort(port16))
    check(err)

    defer listener.Close()

    listener.Handle(func(ctx noise.HandlerContext) error {
        if !ctx.IsRequest() {
            return nil
        }

        fmt.Printf("Got a message: '%s'\n", string(ctx.Data()))

        return ctx.Send([]byte("Hi"))
    })

    check(listener.Listen())

    fmt.Println("listening on", listener.Addr())

}

Sender

func main() {

    if len(os.Args) != 2 {
        panic("ahhh")
    }

    address := os.Args[1]
    sender, err := noise.NewNode()
    check(err)

    defer sender.Close()

    check(sender.Listen())

    check(sender.Send(context.TODO(), address, []byte("Hi Bob!")))
}