tcp.go 895 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package tcp
  2. import (
  3. "errors"
  4. "net"
  5. "server/dao/devices"
  6. "server/utils/logger"
  7. "strings"
  8. )
  9. var ScreenList []devices.Screens
  10. func ListenTcp() {
  11. // 监听当前的tcp连接
  12. listen, err := net.Listen("tcp", "0.0.0.0:9200")
  13. if err != nil {
  14. logger.Logger.Errorf("listen failed, err:%v", err)
  15. return
  16. }
  17. for {
  18. conn, err := listen.Accept() // 建立连接
  19. if err != nil {
  20. logger.Logger.Errorf("Accept failed, err:%v", err)
  21. continue
  22. }
  23. err = CheckConn(conn)
  24. if err != nil {
  25. continue
  26. }
  27. }
  28. }
  29. func CheckConn(conn net.Conn) error {
  30. logger.Logger.Debugf("StartDevice addr:%s", conn.RemoteAddr().String())
  31. arr := strings.Split(conn.RemoteAddr().String(), ":")
  32. ip := arr[0]
  33. ScreenList = devices.QueryAllScreens()
  34. for _, v := range ScreenList {
  35. if v.IPAddress == ip {
  36. dev := Device{info: v}
  37. dev.Start(conn)
  38. return nil
  39. }
  40. }
  41. return errors.New("not found")
  42. }