request.go 667 B

12345678910111213141516171819202122232425262728293031
  1. package request
  2. import (
  3. "fmt"
  4. "net"
  5. "time"
  6. )
  7. func SendTCPRequest(port int, content []byte, timeout time.Duration) (res string, err error) {
  8. c, err := net.Dial("tcp", fmt.Sprintf("127.0.0.1:%d", port))
  9. if err != nil {
  10. err = fmt.Errorf("connect to tcp server error: %v", err)
  11. return
  12. }
  13. defer c.Close()
  14. c.SetDeadline(time.Now().Add(timeout))
  15. return sendTCPRequestByConn(c, content)
  16. }
  17. func sendTCPRequestByConn(c net.Conn, content []byte) (res string, err error) {
  18. c.Write(content)
  19. buf := make([]byte, 2048)
  20. n, errRet := c.Read(buf)
  21. if errRet != nil {
  22. err = fmt.Errorf("read from tcp error: %v", errRet)
  23. return
  24. }
  25. return string(buf[:n]), nil
  26. }