I'm trying to write a simple sockets based go server. I'm just wondering how does the connection.Read below knows when to stop reading. (Note: this is not my code, I copied it from Unix Sockets in Go as example)
package main
import (
  "log"
  "net"
)
func echoServer(c net.Conn) {
  for {
    buf := make([]byte, 512)
    nr, err := c.Read(buf)
    if err != nil {
        return
    }
    data := buf[0:nr]
    println("Server got:", string(data))
    _, err = c.Write(data)
    if err != nil {
        log.Fatal("Write: ", err)
    }
  }
}
func main() {
  l, err := net.Listen("unix", "/tmp/echo.sock")
  if err != nil {
    log.Fatal("listen error:", err)
  }
  for {
    fd, err := l.Accept()
    if err != nil {
        log.Fatal("accept error:", err)
    }
    go echoServer(fd)
  }
 }
Is it the EOF character or there's something else? It would be really helpful if someone can point me to a link official go docs. Thanks.
 
     
    