这在很大程度上取决于您要执行的 *** 作以及所期望的数据类型,例如,如果您只想读到EOF,则可以使用以下内容:
func main() { conn, err := net.Dial("tcp", "google.com:80") if err != nil { fmt.Println("dial error:", err) return } defer conn.Close() fmt.Fprintf(conn, "GET / HTTP/1.0rnrn") buf := make([]byte, 0, 4096) // big buffer tmp := make([]byte, 256) // using small tmo buffer for demonstrating for { n, err := conn.Read(tmp) if err != nil { if err != io.EOF { fmt.Println("read error:", err) } break } //fmt.Println("got", n, "bytes.") buf = append(buf, tmp[:n]...) } fmt.Println("total size:", len(buf)) //fmt.Println(string(buf))}
// edit:出于完整性考虑,@ fabrizioM提出了很棒的建议,这完全让我无视:
func main() { conn, err := net.Dial("tcp", "google.com:80") if err != nil { fmt.Println("dial error:", err) return } defer conn.Close() fmt.Fprintf(conn, "GET / HTTP/1.0rnrn") var buf bytes.Buffer io.Copy(&buf, conn) fmt.Println("total size:", buf.Len())}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)