Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.03 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "bufio"
  5. "fmt"
  6. "log"
  7. "math/rand"
  8. "net"
  9. "os"
  10. "time"
  11. )
  12.  
  13. func main() {
  14. connHost := "localhost"
  15. connPort := "9090"
  16.  
  17. l, err := net.Listen("tcp", connHost+":"+connPort)
  18. if err != nil {
  19. log.Println("Error listening:", err.Error())
  20. os.Exit(1)
  21. }
  22.  
  23. fmt.Println("TCP listening")
  24.  
  25. for {
  26. conn, err := l.Accept()
  27. if err != nil {
  28. log.Println("Error accepting: ", err.Error())
  29. os.Exit(1)
  30. }
  31. go readMessage(conn) // ทำให้เป็น goroutine
  32. }
  33. }
  34.  
  35. func readMessage(conn net.Conn) {
  36. timeoutDuration := 10 * time.Second
  37.  
  38. conn.SetReadDeadline(time.Now().Add(timeoutDuration))
  39.  
  40. message, err := bufio.NewReader(conn).ReadString('\n')
  41. if err != nil {
  42. log.Println("Error rea dmessage: ", err.Error())
  43. conn.Write([]byte("\n"))
  44. return
  45. }
  46.  
  47. time.Sleep(100 * time.Duration(rand.Intn(10)) * time.Millisecond) // เพิ่ม delay ให้แต่ละ message ใช้เวลาไม่เท่ากัน
  48.  
  49. conn.Write([]byte("server received message\n"))
  50. fmt.Println("Message : ", message)
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement