client.go 639 B

1234567891011121314151617181920212223242526272829303132
  1. //客户端封装
  2. package util
  3. import (
  4. "fmt"
  5. "net"
  6. "os"
  7. )
  8. //出错检测
  9. func checkError(err error) {
  10. if err != nil {
  11. fmt.Fprintf(os.Stderr, "出错了: %s", err.Error())
  12. os.Exit(1)
  13. }
  14. }
  15. //
  16. func StartClient(parseEvent func([]byte), serveraddr string) (*Writer, net.Conn) {
  17. tcpAddr, err := net.ResolveTCPAddr("tcp4", serveraddr)
  18. checkError(err)
  19. conn, err := net.DialTCP("tcp", nil, tcpAddr)
  20. checkError(err)
  21. w := NewWriter(conn)
  22. //接受消息
  23. messageQueue := make(chan RawData, 2000) //并发1000
  24. go processMsg(messageQueue, parseEvent)
  25. //从流中提取消息
  26. go forwardMessage(conn, messageQueue)
  27. return w, conn
  28. }