Skip to content

Instantly share code, notes, and snippets.

@ptflp
Last active May 10, 2022 20:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ptflp/802a2af4d36635d6153ba2ee5e5c5c17 to your computer and use it in GitHub Desktop.
Save ptflp/802a2af4d36635d6153ba2ee5e5c5c17 to your computer and use it in GitHub Desktop.
Manual webserver golang
package main
import (
"bufio"
"fmt"
"net"
)
func main() {
l, err := net.Listen("tcp", ":8888")
if err != nil {
fmt.Println(err)
return
}
defer func() {
err = l.Close()
if err != nil {
fmt.Println(err)
}
}()
for {
c, err := l.Accept()
if err != nil {
fmt.Println(err)
return
}
go func() {
bufReader := bufio.NewReader(c)
netData, err := bufReader.ReadBytes('\n')
if err != nil {
fmt.Println(err)
return
}
fmt.Print(string(netData))
m := "HTTP/1.1 200 OK\n"
m = m + "Server: nginx/1.19.2\n"
m = m + "Date: Mon, 19 Oct 2020 13:13:29 GMT\n"
m = m + "Content-Type: text/html\n"
m = m + "Content-Length: 98\n"
m = m + "Last-Modified: Mon, 19 Oct 2020 13:13:13 GMT\n"
m = m + "Connection: keep-alive\n"
m = m + "ETag: \"5f8d90e9-62\"\n"
m = m + "Accept-Ranges: bytes\n"
m = m + "\n"
m = m + "<!DOCTYPE html>\n"
m = m + "<html>\n"
m = m + "<head>\n"
m = m + "<title>Webserver</title>\n"
m = m + "</head>\n"
m = m + "<body>\n"
m = m + "hello world\n"
m = m + "</body>\n"
m = m + "</html>\n"
c.Write([]byte(m))
}()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment