Frederic G. MARAND 4 years ago
parent
commit
c5ef7f35b3
1 changed files with 19 additions and 7 deletions
  1. 19 7
      part6/main.go

+ 19 - 7
part6/main.go

@@ -15,12 +15,13 @@ import (
 	"net"
 	"os"
 
-	"github.com/campoy/whispering-gophers/util"
+	"code.osinet.fr/fgm/whispering_gophers/util"
 )
 
 var (
-	peerAddr = flag.String("peer", "", "peer host:port")
-	self     string
+	listenAddr = flag.String("listen", "", "peer host:port")
+	peerAddr   = flag.String("peer", "", "peer host:port")
+	self       string
 )
 
 type Message struct {
@@ -31,7 +32,14 @@ type Message struct {
 func main() {
 	flag.Parse()
 
-	l, err := util.Listen()
+	var l net.Listener
+	var err error
+	// Create a new listener using util.Listen and put it in a variable named l.
+	if *listenAddr == "" {
+		l, err = util.ListenOnFirstUsableInterface()
+	} else {
+		l, err = net.Listen("tcp4", *listenAddr)
+	}
 	if err != nil {
 		log.Fatal(err)
 	}
@@ -64,7 +72,8 @@ func serve(c net.Conn) {
 	}
 }
 
-// TODO: Make a new channel of Messages.
+// Make a new channel of Messages.
+var peer = make(chan Message)
 
 func readInput() {
 	s := bufio.NewScanner(os.Stdin)
@@ -73,11 +82,13 @@ func readInput() {
 			Addr: self,
 			Body: s.Text(),
 		}
-		// TODO: Send the message to the channel of messages.
+		// Send the message to the channel of messages.
+		peer <- m
 	}
 	if err := s.Err(); err != nil {
 		log.Fatal(err)
 	}
+	os.Exit(0)
 }
 
 func dial(addr string) {
@@ -90,7 +101,8 @@ func dial(addr string) {
 
 	e := json.NewEncoder(c)
 
-	for /* TODO: Receive messages from the channel using range, storing them in the variable m. */ {
+	/* Receive messages from the channel using range, storing them in the variable m. */
+	for m := range peer {
 		err := e.Encode(m)
 		if err != nil {
 			log.Println(addr, err)