package netTools //main // import ( "fmt" "net" "strconv" "strings" "time" ) func smain() { lis,err := net.Listen("tcp",":1789") if err != nil { fmt.Println(err) } defer lis.Close() for { con,_ := lis.Accept() go handler(con) } } func handler(con net.Conn) { defer con.Close() buf := make([]byte,20) n,_ := con.Read(buf) fmt.Println(string(buf[:n])) con.Write(buf) con.Write(buf) } //func main() { // buf,err := Telnet([]string{"w_Hello World","r_50","r_30"},"127.0.0.1:1789",20) // fmt.Println(err) // fmt.Println(string(buf)) //} func PortIsOpen(ip string,timeout int) bool { con,err := net.DialTimeout("tcp",ip,time.Duration(timeout)) if err != nil { return false } con.Close() return true } func Telnet(action []string,ip string,timeout int) (buf []byte,err error) { con,time.Duration(timeout)*time.Second) if err != nil { return } defer con.Close() con.SetReadDeadline(time.Now().Add(time.Second * 5)) for _,v := range action { l := strings.SplitN(v,"_",2) if len(l) < 2 { return } switch l[0] { case "r": var n int n,err = strconv.Atoi(l[1]) if err != nil { return } p := make([]byte,n) n,err = con.Read(p) if err != nil { return } buf = append(buf,p[:n]...) fmt.Println(buf) case "w": _,err = con.Write([]byte(l[1])) } } return }
原文地址:https://www.jb51.cc/go/189802.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。