| 41 | } |
| 42 | |
| 43 | func (c *Client) Do(cmd ...string) (string, error) { |
| 44 | if err := Write(c.c, cmd); err != nil { |
| 45 | if err, ok := err.(*net.OpError); ok { |
| 46 | fmt.Println("net op err ", err.Err.Error()) |
| 47 | if err.Err.Error() == "use of closed network connection" || err.Err.Error() == "write: broken pipe" { |
| 48 | conn, err := net.Dial("tcp", c.c.RemoteAddr().String()) |
| 49 | if err != nil { |
| 50 | return "", err |
| 51 | } |
| 52 | c.c = conn |
| 53 | if err := Write(c.c, cmd); err != nil { |
| 54 | return "", err |
| 55 | } |
| 56 | } else { |
| 57 | return "", err |
| 58 | } |
| 59 | } else { |
| 60 | return "", err |
| 61 | } |
| 62 | } |
| 63 | |
| 64 | return Read(c.r) |
| 65 | } |
| 66 | |
| 67 | func (c *Client) Read() (string, error) { |
| 68 | return Read(c.r) |