Created
April 22, 2019 14:34
-
-
Save Hiyorimi/c47c77a7c3dd7e95c7f93dc11b61415b to your computer and use it in GitHub Desktop.
Simple go echo server
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"flag" | |
"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() { | |
var l net.Listener | |
var err error | |
port := flag.String("port", "8080", "port to bind to") | |
socket := flag.Bool("socket", true, "Listen to socket or to unix socket. Default: socket.") | |
pathPtr := flag.String("path", "/tmp/echo.sock", "path to socket") | |
flag.Parse() | |
if *socket { | |
l, err = net.Listen("tcp", *port) | |
} else { | |
l, err = net.Listen("unix", *pathPtr) | |
} | |
if err != nil { | |
log.Fatal("listen error:", err) | |
} | |
for { | |
conn, err := l.Accept() | |
if err != nil { | |
log.Fatal("accept error:", err) | |
} | |
go echoServer(conn) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment