Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "bufio"
  5. "io"
  6. "log"
  7. "net"
  8. "os"
  9. "strconv"
  10. "strings"
  11. )
  12.  
  13. const (
  14. Message = "Pong"
  15. //StopCharacter = "\r\n\r\n"
  16. )
  17.  
  18. func SocketServer(port int) {
  19.  
  20. listen, err := net.Listen("tcp4", ":"+strconv.Itoa(port))
  21.  
  22. if err != nil {
  23. log.Fatalf("Socket listen port %d failed,%s", port, err)
  24. os.Exit(1)
  25. }
  26.  
  27. defer listen.Close()
  28.  
  29. log.Printf("Begin listen port: %d", port)
  30.  
  31. for {
  32. conn, err := listen.Accept()
  33. if err != nil {
  34. log.Fatalln(err)
  35. continue
  36. }
  37. go handler(conn)
  38. }
  39.  
  40. }
  41.  
  42. func handler(conn net.Conn) {
  43.  
  44. defer conn.Close()
  45.  
  46. var (
  47. buf = make([]byte, 1024)
  48. r = bufio.NewReader(conn)
  49. w = bufio.NewWriter(conn)
  50. )
  51.  
  52.  
  53. ILOOP:
  54. for {
  55. n, err := r.Read(buf)
  56. data := string(buf[:n])
  57.  
  58. switch err {
  59. case io.EOF:
  60. break ILOOP
  61. case nil:
  62. log.Println("Receive:", data)
  63. w.Write([]byte("bien recu"))
  64. w.Flush()
  65. log.Printf("bien confirmé")
  66. if isTransportOver(data) {
  67. break ILOOP
  68. }
  69.  
  70. default:
  71. log.Fatalf("Receive data failed:%s", err)
  72. return
  73. }
  74.  
  75. }
  76. }
  77.  
  78. func isTransportOver(data string) (over bool) {
  79. over = strings.HasSuffix(data, "\r\n\r\n")
  80. return
  81. }
  82.  
  83. func main() {
  84.  
  85. port := 3334
  86.  
  87. SocketServer(port)
  88.  
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement