...
1 package main
2
3 import (
4 "fmt"
5 "log"
6 "net"
7 "net/http"
8 )
9
10 type (
11 ipv4Handler struct{}
12 ipv6Handler struct{}
13 )
14
15 func (ipv4Handler) ServeHTTP(w http.ResponseWriter, _ *http.Request) {
16 fmt.Fprintf(w, "IPv4\n")
17 }
18
19 func (ipv6Handler) ServeHTTP(w http.ResponseWriter, _ *http.Request) {
20 fmt.Fprintf(w, "IPv6\n")
21 }
22
23 func main() {
24 log.Print("Server started")
25
26 go func() {
27 ln, err := net.Listen("tcp4", "0.0.0.0:8080")
28 if err != nil {
29 log.Fatal(err)
30 }
31 srv := &http.Server{Handler: ipv4Handler{}}
32 log.Fatal(srv.Serve(ln))
33 }()
34
35 ln, err := net.Listen("tcp6", "[::]:8080")
36 if err != nil {
37 log.Fatal(err)
38 }
39 srv := &http.Server{Handler: ipv6Handler{}}
40 log.Fatal(srv.Serve(ln))
41 }
42
View as plain text