server2.go 849 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "net/http"
  6. "sync"
  7. )
  8. var mu sync.Mutex
  9. var count int
  10. func main() {
  11. http.HandleFunc("/", handler_)
  12. http.HandleFunc("/count", counter)
  13. log.Fatal(http.ListenAndServe("localhost:8000", nil))
  14. }
  15. func handler_(w http.ResponseWriter, r *http.Request) {
  16. mu.Lock()
  17. count++
  18. mu.Unlock()
  19. //fmt.Fprintf(w, "URL.Path = %q\n", r.URL.Path)
  20. fmt.Fprintf(w, "%s %s %s\n", r.Method, r.URL, r.Proto)
  21. for k, v := range r.Header {
  22. fmt.Fprintf(w, "Header[%q] = %q\n", k, v)
  23. }
  24. fmt.Fprintf(w, "Host = %q\n", r.Host)
  25. fmt.Fprintf(w, "RemoteAddr = %q\n", r.RemoteAddr)
  26. if err := r.ParseForm(); err != nil {
  27. log.Print(err)
  28. }
  29. for k, v := range r.Form {
  30. fmt.Fprintf(w, "Form[%q] = %q\n", k, v)
  31. }
  32. }
  33. func counter(w http.ResponseWriter, r *http.Request) {
  34. mu.Lock()
  35. fmt.Fprintf(w, "Count %d\n", count)
  36. mu.Unlock()
  37. }