Skip to content

Commit

Permalink
Merge pull request #146 from libp2p/fix/examples
Browse files Browse the repository at this point in the history
Update examples
  • Loading branch information
whyrusleeping committed Nov 9, 2016
2 parents 1c10ed4 + f3812de commit 647d20a
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 122 deletions.
41 changes: 41 additions & 0 deletions examples/echo/README.md
@@ -0,0 +1,41 @@
# Echo client/server with libp2p

This example can be started in either listen mode (server), or dial mode (client).

In listen mode, it will sit and wait for incoming connections on
the `/echo/1.0.0` protocol. Whenever it receives a stream, it will
write whatever message it received, and close the stream.

In dial mode, it will connect to the target peer on the given address.
It then opens a stream, writes a short message on the same protocol,
and print whatever reply it receives.

## Build

```
> make deps
> go build ./examples/hosts
```

## Usage

In one terminal:

```
> ./hosts -l 4737
2016/11/06 04:37:00 I am /ip4/127.0.0.1/tcp/4737/ipfs/QmXzbaXtBw6mU29WoeYrCtcRLVbT8asWCcEFVuDy4w6pdq
2016/11/06 04:37:00 listening for connections
2016/11/06 04:37:01 got a new stream
2016/11/06 04:37:01 read request: "Hello, world!"
```

In another, copy the address printed by the listener and do:

```
> ./hosts -d /ip4/127.0.0.1/tcp/4737/ipfs/QmXzbaXtBw6mU29WoeYrCtcRLVbT8asWCcEFVuDy4w6pdq
2016/11/06 04:37:01 I am /ip4/127.0.0.1/tcp/0/ipfs/QmeMNYMmkgoyd8M7y925r4yVVDjKtiYtU4rNCyj7wDWzk1
2016/11/06 04:37:01 connecting to target
2016/11/06 04:37:01 opening stream
2016/11/06 04:37:01 read reply: "Hello, world!"
>
```
37 changes: 18 additions & 19 deletions examples/hosts/main.go → examples/echo/main.go
Expand Up @@ -67,7 +67,7 @@ func main() {

flag.Parse()

listenaddr := fmt.Sprintf("/ip4/0.0.0.0/tcp/%d", *listenF)
listenaddr := fmt.Sprintf("/ip4/127.0.0.1/tcp/%d", *listenF)

ha, err := makeDummyHost(listenaddr, *secio)
if err != nil {
Expand All @@ -76,12 +76,13 @@ func main() {

// Set a stream handler on host A
ha.SetStreamHandler("/echo/1.0.0", func(s net.Stream) {
log.Println("Got a new stream!")
log.Println("got a new stream")
doEcho(s)
defer s.Close()
})

if *target == "" {
log.Println("listening for connections...")
log.Println("listening for connections")
select {} // hang forever
}

Expand Down Expand Up @@ -117,15 +118,15 @@ func main() {
log.Fatalln(err)
}

log.Println("opening stream...")
log.Println("opening stream")
// make a new stream from host B to host A
// it should be handled on host A by the handler we set
s, err := ha.NewStream(context.Background(), peerid, "/hello/1.0.0")
s, err := ha.NewStream(context.Background(), peerid, "/echo/1.0.0")
if err != nil {
log.Fatalln(err)
}

_, err = s.Write([]byte("Hello world of peer two peer"))
_, err = s.Write([]byte("Hello, world!"))
if err != nil {
log.Fatalln(err)
}
Expand All @@ -135,23 +136,21 @@ func main() {
log.Fatalln(err)
}

log.Println("GOT: ", string(out))
log.Printf("read reply: %q\n", out)
}

func doEcho(s inet.Stream) {
buf := make([]byte, 1024)
for {
n, err := s.Read(buf)
if err != nil {
log.Println(err)
return
}
n, err := s.Read(buf)
if err != nil {
log.Println(err)
return
}

log.Printf("read data: %q\n", buf[:n])
_, err = s.Write(buf[:n])
if err != nil {
log.Println(err)
return
}
log.Printf("read request: %q\n", buf[:n])
_, err = s.Write(buf[:n])
if err != nil {
log.Println(err)
return
}
}
28 changes: 0 additions & 28 deletions examples/hosts/README.md

This file was deleted.

16 changes: 0 additions & 16 deletions examples/justtcp/README.md

This file was deleted.

59 changes: 0 additions & 59 deletions examples/justtcp/main.go

This file was deleted.

0 comments on commit 647d20a

Please sign in to comment.