Hi i'm attempted to learn some socket programming in golang, I'm following along with this tutorial
http://synflood.at/tmp/golang-slides/mrmcd2012.html#1
Here is the final result of the tutorial on one page. https://github.com/akrennmair/telnet-chat/blob/master/03_chat/chat.go
I'm confused on how to write the client side of this program, I create a connection and dial into the same port/ip as the server is running on but from there I don't know. I have read() and write() functions for the newly created connection but no idea where to delimit the read or anything. Considering the text input is handeled in the server I imagine I'd only need to do a read of some kind?
package main
import (
"bufio"
"fmt"
"net"
"os"
)
func main() {
conn, err := net.Dial("tcp", "127.0.0.1:6000")
if err != nil {
fmt.Println(err)
os.Exit(1)
}
for {
fmt.Println(bufio.NewReader(conn).ReadString([]byte("\n")))
}
}
bufio.NewReader
should be used only once, in your case, just before the for
. For example connbuf := bufio.NewReader(conn)
. Then you can use ReadString on connbuf, that returns the string and maybe an error. For example:
connbuf := bufio.NewReader(conn)
for{
str, err := connbuf.ReadString('\n')
if err != nil {
break
}
if len(str) > 0 {
fmt.Println(str)
}
}
I'm checking len
and err
because ReadString
may return data and an error (connection error, connection reset, etc.) so you need to check both.